You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2017/09/26 19:09:43 UTC

[14/40] airavata git commit: AIRAVATA-2500 Implement API method to get provisioner metadata

AIRAVATA-2500 Implement API method to get provisioner metadata


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/643d35b3
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/643d35b3
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/643d35b3

Branch: refs/heads/develop
Commit: 643d35b3884d1014a47c3a1b50fc6580d0dabeb1
Parents: 469a7e7
Author: Marcus Christie <ma...@apache.org>
Authored: Thu Sep 7 09:41:17 2017 -0400
Committer: Marcus Christie <ma...@apache.org>
Committed: Tue Sep 19 15:07:57 2017 -0400

----------------------------------------------------------------------
 .../server/handler/AiravataServerHandler.java   | 56 ++++++++++++++------
 .../accountprovisioning/SSHAccountManager.java  |  3 +-
 .../SSHAccountProvisioner.java                  | 10 ++--
 .../SSHAccountProvisionerFactory.java           | 14 ++---
 .../SSHAccountProvisionerProvider.java          |  3 +-
 .../IULdapSSHAccountProvisioner.java            | 10 ----
 .../IULdapSSHAccountProvisionerProvider.java    | 31 ++++++++++-
 .../SSHAccountProvisionerFactoryTest.java       |  4 +-
 .../provisioner/TestSSHAccountProvisioner.java  | 10 ----
 .../TestSSHAccountProvisionerProvider.java      | 10 ++++
 .../airavata-apis/airavata_api.thrift           | 12 ++---
 .../account_provisioning_model.thrift           | 12 +++--
 12 files changed, 107 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/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 bb3f2c0..febb703 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
@@ -19,7 +19,10 @@
  */
 package org.apache.airavata.api.server.handler;
 
+import org.apache.airavata.accountprovisioning.ConfigParam;
 import org.apache.airavata.accountprovisioning.SSHAccountManager;
+import org.apache.airavata.accountprovisioning.SSHAccountProvisionerFactory;
+import org.apache.airavata.accountprovisioning.SSHAccountProvisionerProvider;
 import org.apache.airavata.api.Airavata;
 import org.apache.airavata.api.airavata_apiConstants;
 import org.apache.airavata.api.server.util.ThriftClientPool;
@@ -38,6 +41,7 @@ import org.apache.airavata.messaging.core.Type;
 import org.apache.airavata.model.WorkflowModel;
 import org.apache.airavata.model.appcatalog.accountprovisioning.SSHAccountProvisioner;
 import org.apache.airavata.model.appcatalog.accountprovisioning.SSHAccountProvisionerConfigParam;
+import org.apache.airavata.model.appcatalog.accountprovisioning.SSHAccountProvisionerConfigParamType;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription;
 import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule;
 import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
@@ -3969,30 +3973,48 @@ public class AiravataServerHandler implements Airavata.Iface {
 
     @Override
     @SecurityCheck
-    public List<SSHAccountProvisioner> getSSHAccountProvisionerNames(AuthzToken authzToken) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+    public List<SSHAccountProvisioner> getSSHAccountProvisioners(AuthzToken authzToken) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
 
-        // TODO: implement
-        return null;
-    }
-
-    @Override
-    @SecurityCheck
-    public List<SSHAccountProvisionerConfigParam> getSSHAccountProvisionerConfigParams(AuthzToken authzToken, String provisionerName) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
-
-        // TODO: implement
-        return null;
+        List<SSHAccountProvisioner> sshAccountProvisioners = new ArrayList<>();
+        List<SSHAccountProvisionerProvider> sshAccountProvisionerProviders = SSHAccountProvisionerFactory.getSSHAccountProvisionerProviders();
+        for (SSHAccountProvisionerProvider provider : sshAccountProvisionerProviders) {
+            // TODO: Move this Thrift conversion to utility class
+            SSHAccountProvisioner sshAccountProvisioner = new SSHAccountProvisioner();
+            sshAccountProvisioner.setCanCreateAccount(provider.canCreateAccount());
+            sshAccountProvisioner.setCanInstallSSHKey(provider.canInstallSSHKey());
+            sshAccountProvisioner.setName(provider.getName());
+            List<SSHAccountProvisionerConfigParam> sshAccountProvisionerConfigParams = new ArrayList<>();
+            for (ConfigParam configParam : provider.getConfigParams()) {
+                SSHAccountProvisionerConfigParam sshAccountProvisionerConfigParam = new SSHAccountProvisionerConfigParam();
+                sshAccountProvisionerConfigParam.setName(configParam.getName());
+                sshAccountProvisionerConfigParam.setDescription(configParam.getDescription());
+                sshAccountProvisionerConfigParam.setIsOptional(configParam.isOptional());
+                switch (configParam.getType()){
+                    case STRING:
+                        sshAccountProvisionerConfigParam.setType(SSHAccountProvisionerConfigParamType.STRING);
+                        break;
+                    case CRED_STORE_PASSWORD_TOKEN:
+                        sshAccountProvisionerConfigParam.setType(SSHAccountProvisionerConfigParamType.CRED_STORE_PASSWORD_TOKEN);
+                        break;
+                }
+                sshAccountProvisionerConfigParams.add(sshAccountProvisionerConfigParam);
+            }
+            sshAccountProvisioner.setConfigParams(sshAccountProvisionerConfigParams);
+            sshAccountProvisioners.add(sshAccountProvisioner);
+        }
+        return sshAccountProvisioners;
     }
 
     @Override
     @SecurityCheck
-    public boolean doesUserHaveSSHAccount(AuthzToken authzToken, String computeResourceId, String username) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+    public boolean doesUserHaveSSHAccount(AuthzToken authzToken, String computeResourceId, String userId) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
-        return SSHAccountManager.doesUserHaveSSHAccount(gatewayId, computeResourceId, username);
+        return SSHAccountManager.doesUserHaveSSHAccount(gatewayId, computeResourceId, userId);
     }
 
     @Override
     @SecurityCheck
-    public UserComputeResourcePreference setupUserComputeResourcePreferencesForSSH(AuthzToken authzToken, String computeResourceId, String username, String airavataCredStoreToken) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
+    public UserComputeResourcePreference setupUserComputeResourcePreferencesForSSH(AuthzToken authzToken, String computeResourceId, String userId, String airavataCredStoreToken) throws InvalidRequestException, AiravataClientException, AiravataSystemException, AuthorizationException, TException {
         String gatewayId = authzToken.getClaimsMap().get(Constants.GATEWAY_ID);
         CredentialStoreService.Client csClient = csClientPool.getResource();
         SSHCredential sshCredential = null;
@@ -4008,13 +4030,13 @@ public class AiravataServerHandler implements Airavata.Iface {
         }
 
         try {
-            UserComputeResourcePreference userComputeResourcePreference = SSHAccountManager.setupSSHAccount(gatewayId, computeResourceId, username, sshCredential);
+            UserComputeResourcePreference userComputeResourcePreference = SSHAccountManager.setupSSHAccount(gatewayId, computeResourceId, userId, sshCredential);
             return userComputeResourcePreference;
         }catch (Exception e){
-            logger.error("Error occurred while automatically setting up SSH account for user [" + username + "]", e);
+            logger.error("Error occurred while automatically setting up SSH account for user [" + userId + "]", e);
             AiravataSystemException exception = new AiravataSystemException();
             exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR);
-            exception.setMessage("Error occurred while automatically setting up SSH account for user [" + username + "]. More info : " + e.getMessage());
+            exception.setMessage("Error occurred while automatically setting up SSH account for user [" + userId + "]. More info : " + e.getMessage());
             throw exception;
         }
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountManager.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountManager.java b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountManager.java
index 74c0dd2..8493dc1 100644
--- a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountManager.java
+++ b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountManager.java
@@ -110,11 +110,12 @@ public class SSHAccountManager {
 
         // instantiate and init the account provisioner
         SSHAccountProvisioner sshAccountProvisioner = createSshAccountProvisioner(gatewayId, computeResourcePreference);
+        boolean canCreateAccount = SSHAccountProvisionerFactory.canCreateAccount(computeResourcePreference.getSshAccountProvisioner());
 
         // First check if username has an account
         boolean hasAccount = sshAccountProvisioner.hasAccount(username);
 
-        if (!hasAccount && !sshAccountProvisioner.canCreateAccount()) {
+        if (!hasAccount && !canCreateAccount) {
             throw new RuntimeException("User [" + username + "] doesn't have account and [" + computeResourceId + "] doesn't have a SSH Account Provisioner that supports creating accounts.");
         }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisioner.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisioner.java b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisioner.java
index 5303081..b8abf1f 100644
--- a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisioner.java
+++ b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisioner.java
@@ -25,10 +25,8 @@ import java.util.Map;
 public interface SSHAccountProvisioner {
 
     void init(Map<ConfigParam, String> config);
-    boolean hasAccount(String username);
-    boolean canCreateAccount();
-    void createAccount(String username, String sshPublicKey);
-    boolean canInstallSSHKey();
-    void installSSHKey(String username, String sshPublicKey);
-    String getScratchLocation(String username);
+    boolean hasAccount(String userId);
+    void createAccount(String userId, String sshPublicKey);
+    void installSSHKey(String userId, String sshPublicKey);
+    String getScratchLocation(String userId);
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactory.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactory.java b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactory.java
index 7b1f6c6..09bf4c3 100644
--- a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactory.java
+++ b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactory.java
@@ -29,12 +29,10 @@ public class SSHAccountProvisionerFactory {
 
     private static ServiceLoader<SSHAccountProvisionerProvider> sshAccountProvisionerProviders = ServiceLoader.load(SSHAccountProvisionerProvider.class);
 
-    public static List<String> getSSHAccountProvisionerImplementationNames() {
-        List<String> names = new ArrayList<>();
-        for (SSHAccountProvisionerProvider sshAccountProvisionerProvider : sshAccountProvisionerProviders ) {
-            names.add(sshAccountProvisionerProvider.getName());
-        }
-        return names;
+    public static List<SSHAccountProvisionerProvider> getSSHAccountProvisionerProviders() {
+        List<SSHAccountProvisionerProvider> providers = new ArrayList<>();
+        sshAccountProvisionerProviders.forEach(providers::add);
+        return providers;
     }
 
     public static List<ConfigParam> getSSHAccountProvisionerConfigParams(String provisionerName) {
@@ -42,6 +40,10 @@ public class SSHAccountProvisionerFactory {
         return getSSHAccountProvisionerProvider(provisionerName).getConfigParams();
     }
 
+    public static boolean canCreateAccount(String provisionerName) {
+        return getSSHAccountProvisionerProvider(provisionerName).canCreateAccount();
+    }
+
     public static SSHAccountProvisioner createSSHAccountProvisioner(String provisionerName, Map<ConfigParam, String> config) {
 
         SSHAccountProvisionerProvider sshAccountProvisionerProvider = getSSHAccountProvisionerProvider(provisionerName);

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerProvider.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerProvider.java b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerProvider.java
index a43a022..297c757 100644
--- a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerProvider.java
+++ b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerProvider.java
@@ -34,5 +34,6 @@ public interface SSHAccountProvisionerProvider {
     }
     List<ConfigParam> getConfigParams();
     SSHAccountProvisioner createSSHAccountProvisioner(Map<ConfigParam,String> config);
-    // TODO: should canCreateAccount and canInstallSSHKey move here? All metadata about provisioner could be on this class
+    boolean canCreateAccount();
+    boolean canInstallSSHKey();
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisioner.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisioner.java b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisioner.java
index 0714f49..03fa803 100644
--- a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisioner.java
+++ b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisioner.java
@@ -40,22 +40,12 @@ public class IULdapSSHAccountProvisioner implements SSHAccountProvisioner {
     }
 
     @Override
-    public boolean canCreateAccount() {
-        return false;
-    }
-
-    @Override
     public void createAccount(String username, String sshPublicKey) {
 
         throw new UnsupportedOperationException("IULdapSSHAccountProvisioner does not support creating cluster accounts at this time.");
     }
 
     @Override
-    public boolean canInstallSSHKey() {
-        return true;
-    }
-
-    @Override
     public void installSSHKey(String username, String sshPublicKey) {
         // TODO: implement
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisionerProvider.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisionerProvider.java b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisionerProvider.java
index b54fdc4..45dc0a6 100644
--- a/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisionerProvider.java
+++ b/modules/compute-account-provisioning/src/main/java/org/apache/airavata/accountprovisioning/provisioner/IULdapSSHAccountProvisionerProvider.java
@@ -24,6 +24,7 @@ import org.apache.airavata.accountprovisioning.ConfigParam;
 import org.apache.airavata.accountprovisioning.SSHAccountProvisioner;
 import org.apache.airavata.accountprovisioning.SSHAccountProvisionerProvider;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -31,8 +32,24 @@ public class IULdapSSHAccountProvisionerProvider implements SSHAccountProvisione
 
     @Override
     public List<ConfigParam> getConfigParams() {
-        // TODO: implement
-        return null;
+        List<ConfigParam> configParams = new ArrayList<>();
+        configParams.add(new ConfigParam("ldap-host")
+                .setDescription("Hostname of LDAP server")
+                .setOptional(false)
+                .setType(ConfigParam.ConfigParamType.STRING));
+        configParams.add(new ConfigParam("ldap-port")
+                .setDescription("Port of LDAP server")
+                .setOptional(false)
+                .setType(ConfigParam.ConfigParamType.STRING));
+        configParams.add(new ConfigParam("ldap-username")
+                .setDescription("Username for LDAP server")
+                .setOptional(false)
+                .setType(ConfigParam.ConfigParamType.STRING));
+        configParams.add(new ConfigParam("ldap-password")
+                .setDescription("Password for LDAP server")
+                .setOptional(false)
+                .setType(ConfigParam.ConfigParamType.CRED_STORE_PASSWORD_TOKEN));
+        return configParams;
     }
 
     @Override
@@ -41,4 +58,14 @@ public class IULdapSSHAccountProvisionerProvider implements SSHAccountProvisione
         sshAccountProvisioner.init(config);
         return sshAccountProvisioner;
     }
+
+    @Override
+    public boolean canCreateAccount() {
+        return false;
+    }
+
+    @Override
+    public boolean canInstallSSHKey() {
+        return true;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java b/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java
index 466896e..89e9ff7 100644
--- a/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java
+++ b/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java
@@ -27,13 +27,15 @@ import org.junit.Test;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 public class SSHAccountProvisionerFactoryTest {
 
     @Test
     public void testGetSSHAccountProvisionerImplementationNames() {
 
-        List<String> sshAccountProvisionerNames = SSHAccountProvisionerFactory.getSSHAccountProvisionerImplementationNames();
+        List<SSHAccountProvisionerProvider> sshAccountProvisionerProviders = SSHAccountProvisionerFactory.getSSHAccountProvisionerProviders();
+        List<String> sshAccountProvisionerNames = sshAccountProvisionerProviders.stream().map(SSHAccountProvisionerProvider::getName).collect(Collectors.toList());
         Assert.assertTrue("names should contain TestSSHAccountProvisioner", sshAccountProvisionerNames.contains("TestSSHAccountProvisioner"));
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisioner.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisioner.java b/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisioner.java
index d2ef213..f47552f 100644
--- a/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisioner.java
+++ b/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisioner.java
@@ -41,21 +41,11 @@ public class TestSSHAccountProvisioner implements SSHAccountProvisioner {
     }
 
     @Override
-    public boolean canCreateAccount() {
-        return false;
-    }
-
-    @Override
     public void createAccount(String username, String sshPublicKey) {
 
     }
 
     @Override
-    public boolean canInstallSSHKey() {
-        return false;
-    }
-
-    @Override
     public void installSSHKey(String username, String sshPublicKey) {
 
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisionerProvider.java
----------------------------------------------------------------------
diff --git a/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisionerProvider.java b/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisionerProvider.java
index 65fcfe5..a8d2cb5 100644
--- a/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisionerProvider.java
+++ b/modules/compute-account-provisioning/src/test/java/org/apache/airavata/accountprovisioning/provisioner/TestSSHAccountProvisionerProvider.java
@@ -63,4 +63,14 @@ public class TestSSHAccountProvisionerProvider implements SSHAccountProvisionerP
         sshAccountProvisioner.init(config);
         return sshAccountProvisioner;
     }
+
+    @Override
+    public boolean canCreateAccount() {
+        return false;
+    }
+
+    @Override
+    public boolean canInstallSSHKey() {
+        return true;
+    }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
index e06c234..1eb7b95 100644
--- a/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
+++ b/thrift-interface-descriptions/airavata-apis/airavata_api.thrift
@@ -2950,13 +2950,7 @@ service Airavata {
               3: airavata_errors.AiravataSystemException ase,
               4: airavata_errors.AuthorizationException ae)
 
-  list<account_provisioning_model.SSHAccountProvisioner> getSSHAccountProvisionerNames(1: required security_model.AuthzToken authzToken)
-    	throws (1: airavata_errors.InvalidRequestException ire,
-              2: airavata_errors.AiravataClientException ace,
-              3: airavata_errors.AiravataSystemException ase,
-              4: airavata_errors.AuthorizationException ae)
-
-  list<account_provisioning_model.SSHAccountProvisionerConfigParam> getSSHAccountProvisionerConfigParams(1: required security_model.AuthzToken authzToken, 2: required string provisionerName)
+  list<account_provisioning_model.SSHAccountProvisioner> getSSHAccountProvisioners(1: required security_model.AuthzToken authzToken)
     	throws (1: airavata_errors.InvalidRequestException ire,
               2: airavata_errors.AiravataClientException ace,
               3: airavata_errors.AiravataSystemException ase,
@@ -2966,7 +2960,7 @@ service Airavata {
    * Check if user has an SSH account on the given compute resource. This
    * method will only work if the compute resource has an SSHAccountProvisioner configured for it.
    */
-  bool doesUserHaveSSHAccount(1: required security_model.AuthzToken authzToken, 2: required string computeResourceId, 3: required string username)
+  bool doesUserHaveSSHAccount(1: required security_model.AuthzToken authzToken, 2: required string computeResourceId, 3: required string userId)
     	throws (1: airavata_errors.InvalidRequestException ire,
               2: airavata_errors.AiravataClientException ace,
               3: airavata_errors.AiravataSystemException ase,
@@ -2979,7 +2973,7 @@ service Airavata {
    * call addUserComputeResourcePreference to persist it.
    */
   user_resource_profile_model.UserComputeResourcePreference setupUserComputeResourcePreferencesForSSH(1: required security_model.AuthzToken authzToken,
-            2: required string computeResourceId, 3: required string username, 4: required string airavataCredStoreToken)
+            2: required string computeResourceId, 3: required string userId, 4: required string airavataCredStoreToken)
     	throws (1: airavata_errors.InvalidRequestException ire,
               2: airavata_errors.AiravataClientException ace,
               3: airavata_errors.AiravataSystemException ase,

http://git-wip-us.apache.org/repos/asf/airavata/blob/643d35b3/thrift-interface-descriptions/data-models/resource-catalog-models/account_provisioning_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/resource-catalog-models/account_provisioning_model.thrift b/thrift-interface-descriptions/data-models/resource-catalog-models/account_provisioning_model.thrift
index 245d295..d314f78 100644
--- a/thrift-interface-descriptions/data-models/resource-catalog-models/account_provisioning_model.thrift
+++ b/thrift-interface-descriptions/data-models/resource-catalog-models/account_provisioning_model.thrift
@@ -28,11 +28,6 @@ enum SSHAccountProvisionerConfigParamType {
     CRED_STORE_PASSWORD_TOKEN
 }
 
-struct SSHAccountProvisioner {
-    1: required string name;
-    2: required bool canCreateAccount;
-    3: required bool canInstallSSHKey;
-}
 
 struct SSHAccountProvisionerConfigParam {
     1: required string name;
@@ -40,3 +35,10 @@ struct SSHAccountProvisionerConfigParam {
     3: required bool isOptional = false;
     4: optional string description;
 }
+
+struct SSHAccountProvisioner {
+    1: required string name;
+    2: required bool canCreateAccount;
+    3: required bool canInstallSSHKey;
+    4: required list<SSHAccountProvisionerConfigParam> configParams;
+}