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/06/07 18:50:22 UTC

[1/3] airavata git commit: AIRAVATA-2431 Migrating Gateway and IAM Tenant also

Repository: airavata
Updated Branches:
  refs/heads/thrift-docker [created] 97e1e9cd2


AIRAVATA-2431 Migrating Gateway and IAM Tenant also


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

Branch: refs/heads/thrift-docker
Commit: 65583e821744ab99a0999a8a4920d583cb6af04b
Parents: c26f289
Author: Marcus Christie <ma...@apache.org>
Authored: Wed Jun 7 12:56:32 2017 -0400
Committer: Marcus Christie <ma...@apache.org>
Committed: Wed Jun 7 12:56:32 2017 -0400

----------------------------------------------------------------------
 .../core/impl/TenantManagementKeycloakImpl.java |  6 +-
 .../commons/tenant/entities/GatewayEntity.java  | 24 ++---
 .../repositories/TenantProfileRepository.java   |  1 -
 modules/user-profile-migration/pom.xml          |  5 ++
 .../airavata/KeycloakTenantCreationManager.java | 92 -------------------
 .../org/apache/airavata/MigrationManager.java   | 95 +++++++++++++++++---
 .../UserProfileAiravataThriftClient.java        | 37 --------
 .../user-profile-migration.properties.template  |  7 +-
 8 files changed, 113 insertions(+), 154 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/65583e82/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java
----------------------------------------------------------------------
diff --git a/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java b/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java
index e3aa6e5..c457bc0 100644
--- a/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java
+++ b/airavata-services/profile-service/iam-admin-services-core/src/main/java/org/apache/airavata/service/profile/iam/admin/services/core/impl/TenantManagementKeycloakImpl.java
@@ -150,6 +150,10 @@ public class TenantManagementKeycloakImpl implements TenantManagementInterface {
         pendingUserRole.setName("user-pending");
         pendingUserRole.setDescription("role for newly registered PGA users");
         defaultRoles.add(pendingUserRole);
+        RoleRepresentation gatewayProviderRole = new RoleRepresentation();
+        gatewayProviderRole.setName("gateway-provider");
+        gatewayProviderRole.setDescription("role for gateway providers in the super-admin PGA");
+        defaultRoles.add(gatewayProviderRole);
         RolesRepresentation rolesRepresentation = new RolesRepresentation();
         rolesRepresentation.setRealm(defaultRoles);
         realmDetails.setRoles(rolesRepresentation);
@@ -237,7 +241,7 @@ public class TenantManagementKeycloakImpl implements TenantManagementInterface {
             } else {
                 logger.error("Request for Realm Client Creation failed, callback URL not present");
                 IamAdminServicesException ex = new IamAdminServicesException();
-                ex.setMessage("Gateway Url field in GatewayProfile cannot be empty, Relam Client creation failed");
+                ex.setMessage("Gateway Url field in GatewayProfile cannot be empty, Realm Client creation failed");
                 throw ex;
             }
             pgaClient.setRedirectUris(redirectUris);

http://git-wip-us.apache.org/repos/asf/airavata/blob/65583e82/airavata-services/profile-service/profile-service-commons/src/main/java/org/apache/airavata/service/profile/commons/tenant/entities/GatewayEntity.java
----------------------------------------------------------------------
diff --git a/airavata-services/profile-service/profile-service-commons/src/main/java/org/apache/airavata/service/profile/commons/tenant/entities/GatewayEntity.java b/airavata-services/profile-service/profile-service-commons/src/main/java/org/apache/airavata/service/profile/commons/tenant/entities/GatewayEntity.java
index a63c0a1..08ae76a 100644
--- a/airavata-services/profile-service/profile-service-commons/src/main/java/org/apache/airavata/service/profile/commons/tenant/entities/GatewayEntity.java
+++ b/airavata-services/profile-service/profile-service-commons/src/main/java/org/apache/airavata/service/profile/commons/tenant/entities/GatewayEntity.java
@@ -42,13 +42,13 @@ public class GatewayEntity {
     private String gatewayPublicAbstract;
     private String reviewProposalDescription;
     private String gatewayAdminFirstName;
-    private String getGatewayAdminLastName;
+    private String gatewayAdminLastName;
     private String gatewayAdminEmail;
     private String identityServerUserName;
     private String identityServerPasswordToken;
     private String declinedReason;
     private String oauthClientId;
-    private String getOauthClientSecret;
+    private String oauthClientSecret;
     private long requestCreationTime;
     private String requesterUsername;
 
@@ -158,12 +158,12 @@ public class GatewayEntity {
     }
 
     @Column(name = "GATEWAY_ADMIN_LAST_NAME")
-    public String getGetGatewayAdminLastName() {
-        return getGatewayAdminLastName;
+    public String getGatewayAdminLastName() {
+        return gatewayAdminLastName;
     }
 
-    public void setGetGatewayAdminLastName(String getGatewayAdminLastName) {
-        this.getGatewayAdminLastName = getGatewayAdminLastName;
+    public void setGatewayAdminLastName(String gatewayAdminLastName) {
+        this.gatewayAdminLastName = gatewayAdminLastName;
     }
 
     @Column(name = "GATEWAY_ADMIN_EMAIL")
@@ -230,12 +230,12 @@ public class GatewayEntity {
     }
 
     @Column(name = "OAUTH_CLIENT_SECRET")
-    public String getGetOauthClientSecret() {
-        return getOauthClientSecret;
+    public String getOauthClientSecret() {
+        return oauthClientSecret;
     }
 
-    public void setGetOauthClientSecret(String oauthClientSecret) {
-        this.getOauthClientSecret = oauthClientSecret;
+    public void setOauthClientSecret(String oauthClientSecret) {
+        this.oauthClientSecret = oauthClientSecret;
     }
 
     @PrePersist
@@ -256,13 +256,13 @@ public class GatewayEntity {
                 ", gatewayPublicAbstract='" + gatewayPublicAbstract + '\'' +
                 ", reviewProposalDescription='" + reviewProposalDescription + '\'' +
                 ", gatewayAdminFirstName='" + gatewayAdminFirstName + '\'' +
-                ", getGatewayAdminLastName='" + getGatewayAdminLastName + '\'' +
+                ", gatewayAdminLastName='" + gatewayAdminLastName + '\'' +
                 ", gatewayAdminEmail='" + gatewayAdminEmail + '\'' +
                 ", identityServerUserName='" + identityServerUserName + '\'' +
                 ", identityServerPasswordToken='" + identityServerPasswordToken + '\'' +
                 ", declinedReason='" + declinedReason + '\'' +
                 ", oauthClientId='" + oauthClientId + '\'' +
-                ", getOauthClientSecret='" + getOauthClientSecret + '\'' +
+                ", oauthClientSecret='" + oauthClientSecret + '\'' +
                 ", requestCreationTime=" + requestCreationTime +
                 ", requesterUsername='" + requesterUsername + '\'' +
                 '}';

http://git-wip-us.apache.org/repos/asf/airavata/blob/65583e82/airavata-services/profile-service/profile-tenant-core/src/main/java/org/apache/airavata/service/profile/tenant/core/repositories/TenantProfileRepository.java
----------------------------------------------------------------------
diff --git a/airavata-services/profile-service/profile-tenant-core/src/main/java/org/apache/airavata/service/profile/tenant/core/repositories/TenantProfileRepository.java b/airavata-services/profile-service/profile-tenant-core/src/main/java/org/apache/airavata/service/profile/tenant/core/repositories/TenantProfileRepository.java
index ebc5fee..13e89e7 100644
--- a/airavata-services/profile-service/profile-tenant-core/src/main/java/org/apache/airavata/service/profile/tenant/core/repositories/TenantProfileRepository.java
+++ b/airavata-services/profile-service/profile-tenant-core/src/main/java/org/apache/airavata/service/profile/tenant/core/repositories/TenantProfileRepository.java
@@ -27,7 +27,6 @@ import org.apache.airavata.service.profile.commons.utils.QueryConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

http://git-wip-us.apache.org/repos/asf/airavata/blob/65583e82/modules/user-profile-migration/pom.xml
----------------------------------------------------------------------
diff --git a/modules/user-profile-migration/pom.xml b/modules/user-profile-migration/pom.xml
index 1baa85b..ee002c6 100755
--- a/modules/user-profile-migration/pom.xml
+++ b/modules/user-profile-migration/pom.xml
@@ -74,6 +74,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-api-stubs</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
             <artifactId>airavata-commons</artifactId>
             <version>0.17-SNAPSHOT</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/airavata/blob/65583e82/modules/user-profile-migration/src/main/java/org/apache/airavata/KeycloakTenantCreationManager.java
----------------------------------------------------------------------
diff --git a/modules/user-profile-migration/src/main/java/org/apache/airavata/KeycloakTenantCreationManager.java b/modules/user-profile-migration/src/main/java/org/apache/airavata/KeycloakTenantCreationManager.java
deleted file mode 100644
index b166a27..0000000
--- a/modules/user-profile-migration/src/main/java/org/apache/airavata/KeycloakTenantCreationManager.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.apache.airavata;
-
-/*
- *
- * 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.
- *
- */
-
-import org.apache.airavata.model.credential.store.PasswordCredential;
-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.service.profile.client.ProfileServiceClientFactory;
-import org.apache.airavata.service.profile.iam.admin.services.cpi.IamAdminServices;
-import org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException;
-import org.apache.thrift.TException;
-
-public class KeycloakTenantCreationManager {
-
-    private String profileServiceServerHost = "localhost";
-    private int profileServiceServerPort = 8962;
-    private String masterAdminUsername = "admin";
-    private String masterAdminPassword = "password";
-
-    private IamAdminServices.Client iamAdminServiceClient = null;
-
-    public void createTenant(Gateway gateway) {
-        PasswordCredential passwordCredential = getPasswordCredential();
-        try {
-            // TODO: replace with real authz token?
-            getIamAdminServiceClient().setUpGateway(new AuthzToken("empty"), gateway, passwordCredential);
-        } catch (TException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    private IamAdminServices.Client getIamAdminServiceClient() {
-        if (iamAdminServiceClient == null) {
-            try {
-                iamAdminServiceClient = ProfileServiceClientFactory.createIamAdminServiceClient(this.profileServiceServerHost, this.profileServiceServerPort);
-            } catch (IamAdminServicesException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return iamAdminServiceClient;
-    }
-
-    private PasswordCredential getPasswordCredential() {
-        PasswordCredential passwordCredential = new PasswordCredential();
-        passwordCredential.setGatewayId("dummy");
-        passwordCredential.setPortalUserName("dummy");
-        passwordCredential.setLoginUserName(masterAdminUsername);
-        passwordCredential.setPassword(masterAdminPassword);
-        return passwordCredential;
-    }
-
-    public static void main(String[] args) {
-
-        // Configuration ...
-        KeycloakTenantCreationManager keycloakTenantCreationManager = new KeycloakTenantCreationManager();
-        keycloakTenantCreationManager.masterAdminUsername = "";
-        keycloakTenantCreationManager.masterAdminPassword = "";
-        keycloakTenantCreationManager.profileServiceServerHost = "";
-
-        Gateway gateway = new Gateway();
-        gateway.setGatewayId("");
-        gateway.setGatewayApprovalStatus(GatewayApprovalStatus.CREATED);
-        gateway.setGatewayName("");
-        gateway.setIdentityServerUserName("");
-        gateway.setGatewayAdminFirstName("");
-        gateway.setGatewayAdminLastName("");
-        gateway.setGatewayAdminEmail("");
-        gateway.setGatewayURL("");
-
-        keycloakTenantCreationManager.createTenant(gateway);
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/65583e82/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java
----------------------------------------------------------------------
diff --git a/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java b/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java
index a44b173..b197c70 100644
--- a/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java
+++ b/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java
@@ -19,10 +19,21 @@
  */
 package org.apache.airavata;
 
+import org.apache.airavata.api.Airavata;
+import org.apache.airavata.api.client.AiravataClientFactory;
 import org.apache.airavata.common.exception.ApplicationSettingsException;
+import org.apache.airavata.model.credential.store.PasswordCredential;
+import org.apache.airavata.model.error.AiravataClientException;
 import org.apache.airavata.model.security.AuthzToken;
 import org.apache.airavata.model.user.Status;
 import org.apache.airavata.model.user.UserProfile;
+import org.apache.airavata.model.workspace.Gateway;
+import org.apache.airavata.model.workspace.GatewayApprovalStatus;
+import org.apache.airavata.service.profile.client.ProfileServiceClientFactory;
+import org.apache.airavata.service.profile.iam.admin.services.cpi.IamAdminServices;
+import org.apache.airavata.service.profile.iam.admin.services.cpi.exception.IamAdminServicesException;
+import org.apache.airavata.service.profile.tenant.cpi.TenantProfileService;
+import org.apache.airavata.service.profile.tenant.cpi.exception.TenantProfileServiceException;
 import org.apache.airavata.service.profile.user.cpi.UserProfileService;
 import org.apache.thrift.TException;
 import org.wso2.carbon.um.ws.api.stub.ClaimValue;
@@ -43,12 +54,14 @@ public class MigrationManager {
     // Default values
     private String profileServiceServerHost = "localhost";
     private int profileServiceServerPort = 8962;
+    private String airavataServiceServerHost = "localhost";
+    private int airavataServiceServerPort = 8930;
     private Map<String,String> roleConversionMap = createDefaultRoleConversionMap();
     private String gatewayId = "gateway-id";
+    private String gatewayURL = "http://localhost";
     private String wso2ISAdminUsername = "username";
     private String wso2ISAdminPassword = "password";
     private String keycloakServiceURL = "https://iam.scigap.org/auth";
-    private String keycloakRealmId = "keycloak-realm";
     private String keycloakAdminUsername = "username";
     private String keycloakAdminPassword = "password";
     private String keycloakTrustStorePath = "../../modules/configuration/server/src/main/resources/client_truststore.jks";
@@ -57,6 +70,7 @@ public class MigrationManager {
 
     // Names of properties in user-profile-migration.properties.template
     private final static String GATEWAY_ID = "gateway-id";
+    private final static String GATEWAY_URL = "gateway.url";
     private final static String WSO2IS_ADMIN_USERNAME = "wso2is.admin.username";
     private final static String WSO2IS_ADMIN_PASSWORD = "wso2is.admin.password";
     private final static String WSO2IS_ADMIN_ROLENAME = "wso2is.admin.rolename";
@@ -64,11 +78,12 @@ public class MigrationManager {
     private final static String WSO2IS_GATEWAY_USER_ROLENAME = "wso2is.gateway-user.rolename";
     private final static String WSO2IS_USER_PENDING_ROLENAME = "wso2is.user-pending.rolename";
     private final static String WSO2IS_GATEWAY_PROVIDER_ROLENAME = "wso2is.gateway-provider.rolename";
+    private final static String AIRAVATA_SERVICE_HOST = "airavata.service.host";
+    private final static String AIRAVATA_SERVICE_PORT = "airavata.service.port";
     private final static String PROFILE_SERVICE_HOST = "profile.service.host";
     private final static String PROFILE_SERVICE_PORT = "profile.service.port";
     private final static String KEYCLOAK_ADMIN_USERNAME = "keycloak.admin.username";
     private final static String KEYCLOAK_ADMIN_PASSWORD = "keycloak.admin.password";
-    private final static String KEYCLOAK_REALM_ID = "keycloak.realm-id";
     private final static String KEYCLOAK_SERVICE_URL = "keycloak.service-url";
     private final static String KEYCLOAK_TRUSTSTORE_PATH = "keycloak.truststore.path";
     private final static String KEYCLOAK_TRUSTSTORE_PASSWORD = "keycloak.truststore.password";
@@ -169,11 +184,70 @@ public class MigrationManager {
                 .collect(Collectors.toList());
     }
 
+    private TenantProfileService.Client getTenantProfileServiceClient() throws TenantProfileServiceException {
+
+        return ProfileServiceClientFactory.createTenantProfileServiceClient(profileServiceServerHost, profileServiceServerPort);
+    }
+
+    private Airavata.Client getAiravataClient() throws AiravataClientException {
+        return AiravataClientFactory.createAiravataClient(airavataServiceServerHost, airavataServiceServerPort);
+    }
+
+    private IamAdminServices.Client getIamAdminServicesClient() throws IamAdminServicesException {
+        return ProfileServiceClientFactory.createIamAdminServiceClient(profileServiceServerHost, profileServiceServerPort);
+    }
+
+    private PasswordCredential getPasswordCredential() {
+        PasswordCredential passwordCredential = new PasswordCredential();
+        passwordCredential.setGatewayId("dummy");
+        passwordCredential.setPortalUserName("dummy");
+        passwordCredential.setLoginUserName(keycloakAdminUsername);
+        passwordCredential.setPassword(keycloakAdminPassword);
+        return passwordCredential;
+    }
+
+    private boolean migrateGatewayProfileToAiravata() throws TException {
+
+        TenantProfileService.Client tenantProfileServiceClient = getTenantProfileServiceClient();
+        Airavata.Client airavataClient = getAiravataClient();
+        IamAdminServices.Client iamAdminServicesClient = getIamAdminServicesClient();
+
+        // Get Gateway from Airavata API
+        Gateway gateway = airavataClient.getGateway(authzToken, gatewayId);
+
+        if (!GatewayApprovalStatus.APPROVED.equals(gateway.getGatewayApprovalStatus())) {
+            throw new RuntimeException("Gateway " + gatewayId + " is not APPROVED! Status is " + gateway.getGatewayApprovalStatus());
+        }
+        // Add Gateway through TenantProfileService
+        if (!tenantProfileServiceClient.isGatewayExist(authzToken, gatewayId)) {
+
+            System.out.println("Gateway [" + gatewayId + "] doesn't exist, adding in Profile Service...");
+            tenantProfileServiceClient.addGateway(authzToken, gateway);
+        } else {
+
+            System.out.println("Gateway [" + gatewayId + "] already exists in Profile Service");
+            gateway = tenantProfileServiceClient.getGateway(authzToken, gatewayId);
+        }
+
+        // Gateway URL is required by IAM Admin Services
+        if (gateway.getGatewayURL() == null) {
+            gateway.setGatewayURL(this.gatewayURL);
+        }
+
+        // Add Keycloak Tenant for Gateway
+        System.out.println("Creating Keycloak Tenant for gateway ...")
+        Gateway gatewayWithIdAndSecret = iamAdminServicesClient.setUpGateway(authzToken, gateway, getPasswordCredential());
+
+        // Update Gateway profile with the client id and secret
+        System.out.println("Updating gateway with OAuth client id and secret ...");
+        tenantProfileServiceClient.updateGateway(authzToken, gatewayWithIdAndSecret);
+        return true;
+    }
+
     /* Method used to migrate User profiles to Airavata DB by making a call to User profile thrift Service */
     private boolean migrateUserProfilesToAiravata(List<UserProfileDAO> ISProfileList) throws TException, ApplicationSettingsException {
         System.out.println("Initiating migration to Airavata internal DB ...");
-        UserProfileAiravataThriftClient objFactory = new UserProfileAiravataThriftClient();
-        UserProfileService.Client client = objFactory.getUserProfileServiceClient(profileServiceServerHost, profileServiceServerPort);
+        UserProfileService.Client client = ProfileServiceClientFactory.createUserProfileServiceClient(profileServiceServerHost, profileServiceServerPort);
         UserProfile airavataUserProfile = new UserProfile();
         // Here are the data associations...
         for(UserProfileDAO ISProfile : ISProfileList){
@@ -204,7 +278,7 @@ public class MigrationManager {
                 this.keycloakAdminPassword,
                 this.keycloakTrustStorePath,
                 this.keycloakTrustStorePassword);
-        client.migrateUserStore(Wso2ISProfileList, this.keycloakRealmId, this.keycloakTemporaryUserPassword, this.roleConversionMap);
+        client.migrateUserStore(Wso2ISProfileList, this.gatewayId, this.keycloakTemporaryUserPassword, this.roleConversionMap);
     }
 
     private void loadConfigFile(String filename) {
@@ -213,12 +287,14 @@ public class MigrationManager {
             properties.load(new FileInputStream(filename));
             // Load values from properties if they exist, otherwise will just use default values
             this.gatewayId = properties.getProperty(GATEWAY_ID, this.gatewayId);
+            this.gatewayURL = properties.getProperty(GATEWAY_URL, this.gatewayURL);
             this.wso2ISAdminUsername = properties.getProperty(WSO2IS_ADMIN_USERNAME, this.wso2ISAdminUsername);
             this.wso2ISAdminPassword = properties.getProperty(WSO2IS_ADMIN_PASSWORD, this.wso2ISAdminPassword);
+            this.airavataServiceServerHost = properties.getProperty(AIRAVATA_SERVICE_HOST, this.airavataServiceServerHost);
+            this.airavataServiceServerPort = Integer.valueOf(properties.getProperty(AIRAVATA_SERVICE_PORT, Integer.toString(this.airavataServiceServerPort)));
             this.profileServiceServerHost = properties.getProperty(PROFILE_SERVICE_HOST, this.profileServiceServerHost);
             this.profileServiceServerPort = Integer.valueOf(properties.getProperty(PROFILE_SERVICE_PORT, Integer.toString(this.profileServiceServerPort)));
             this.keycloakServiceURL = properties.getProperty(KEYCLOAK_SERVICE_URL, this.keycloakServiceURL);
-            this.keycloakRealmId = properties.getProperty(KEYCLOAK_REALM_ID, this.keycloakRealmId);
             this.keycloakAdminUsername = properties.getProperty(KEYCLOAK_ADMIN_USERNAME, this.keycloakAdminUsername);
             this.keycloakAdminPassword = properties.getProperty(KEYCLOAK_ADMIN_PASSWORD, this.keycloakAdminPassword);
             this.keycloakTrustStorePath = properties.getProperty(KEYCLOAK_TRUSTSTORE_PATH, this.keycloakTrustStorePath);
@@ -244,12 +320,11 @@ public class MigrationManager {
         migrationManager.setISLoginCredentials();
         List<UserProfileDAO> userProfileList = migrationManager.getUserProfilesFromWso2IS();
         try {
+            migrationManager.migrateGatewayProfileToAiravata();
             migrationManager.migrateUserProfilesToAiravata(userProfileList);
             migrationManager.migrateUserProfilesToKeycloak(userProfileList);
-        } catch (TException e) {
-            e.printStackTrace();
-        } catch (ApplicationSettingsException e) {
-            e.printStackTrace();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/65583e82/modules/user-profile-migration/src/main/java/org/apache/airavata/UserProfileAiravataThriftClient.java
----------------------------------------------------------------------
diff --git a/modules/user-profile-migration/src/main/java/org/apache/airavata/UserProfileAiravataThriftClient.java b/modules/user-profile-migration/src/main/java/org/apache/airavata/UserProfileAiravataThriftClient.java
deleted file mode 100644
index 3bea905..0000000
--- a/modules/user-profile-migration/src/main/java/org/apache/airavata/UserProfileAiravataThriftClient.java
+++ /dev/null
@@ -1,37 +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;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.service.profile.client.ProfileServiceClientFactory;
-import org.apache.airavata.service.profile.user.cpi.UserProfileService;
-import org.apache.airavata.service.profile.user.cpi.exception.UserProfileServiceException;
-import org.apache.thrift.TException;
-
-public class UserProfileAiravataThriftClient {
-
-    public UserProfileService.Client getUserProfileServiceClient(String serverHost, int serverPort) throws TException, ApplicationSettingsException {
-        try {
-            return ProfileServiceClientFactory.createUserProfileServiceClient(serverHost, serverPort);
-        } catch (UserProfileServiceException e) {
-            throw new TException("Unable to create user profile service client...", e);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/65583e82/modules/user-profile-migration/user-profile-migration.properties.template
----------------------------------------------------------------------
diff --git a/modules/user-profile-migration/user-profile-migration.properties.template b/modules/user-profile-migration/user-profile-migration.properties.template
index aa751b2..840effe 100644
--- a/modules/user-profile-migration/user-profile-migration.properties.template
+++ b/modules/user-profile-migration/user-profile-migration.properties.template
@@ -1,5 +1,7 @@
 # Common settings
+# NOTE: the gateway-id will also be used for the realm id in Keycloak
 gateway-id = gateway-id
+gateway.url = http://localhost
 
 # WSO2 Identity Server settings
 wso2is.admin.username = username
@@ -10,6 +12,10 @@ wso2is.gateway-user.rolename = gateway-user
 wso2is.user-pending.rolename = user-pending
 wso2is.gateway-provider.rolename = gateway-provider
 
+# Airavata Service settings
+airavata.service.host = localhost
+airavata.service.port = 8930
+
 # Profile Service settings
 profile.service.host = localhost
 profile.service.port = 8962
@@ -17,7 +23,6 @@ profile.service.port = 8962
 # Keycloak settings
 keycloak.admin.username = username
 keycloak.admin.password = password
-keycloak.realm-id = keycloak-realm
 keycloak.service-url = https://iam.scigap.org/auth
 keycloak.truststore.path = ../../modules/configuration/server/src/main/resources/client_truststore.jks
 keycloak.truststore.password = password


[3/3] airavata git commit: AIRAVATA-2432 Using Docker to run Thrift

Posted by ma...@apache.org.
AIRAVATA-2432 Using Docker to run Thrift


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

Branch: refs/heads/thrift-docker
Commit: 97e1e9cd27e81e26977aff24914cf68d6ea53fa5
Parents: 349231e
Author: Marcus Christie <ma...@apache.org>
Authored: Wed Jun 7 14:49:39 2017 -0400
Committer: Marcus Christie <ma...@apache.org>
Committed: Wed Jun 7 14:49:39 2017 -0400

----------------------------------------------------------------------
 .../generate-thrift-stubs.sh                    | 24 ++++++++------------
 .../service-cpis/generate-service-cpi-stubs.sh  | 14 ++++--------
 2 files changed, 13 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/97e1e9cd/thrift-interface-descriptions/generate-thrift-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/generate-thrift-stubs.sh b/thrift-interface-descriptions/generate-thrift-stubs.sh
index d78d9d5..3723059 100755
--- a/thrift-interface-descriptions/generate-thrift-stubs.sh
+++ b/thrift-interface-descriptions/generate-thrift-stubs.sh
@@ -46,15 +46,9 @@ then
 	exit 0
 fi
 
-# Generation of thrift files will require installing Apache Thrift. Please add thrift to your path.
-#  Verify is thrift is installed, is in the path is at a specified version.
-
 REQUIRED_THRIFT_VERSION='0.9.3'
-if hash thrift &> /dev/null; then
-  THRIFT_EXEC=$(which thrift)
-else
-  THRIFT_EXEC=/usr/local/bin/thrift
-fi
+THRIFT_DOCKER_IMAGE='thrift'
+THRIFT_EXEC="docker run --rm -v $PWD:/data $THRIFT_DOCKER_IMAGE:$REQUIRED_THRIFT_VERSION thrift"
 
 VERSION=$($THRIFT_EXEC -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" |  wc -l)
 if [ "$VERSION" -ne 1 ] ; then
@@ -68,12 +62,12 @@ AIRAVATA_API_IDL_DIR='airavata-apis'
 BASE_TARGET_DIR='target'
 
 # Thrift files
-AIRAVATA_API_THRIFT_FILE='airavata-apis/airavata_api.thrift'
-DATAMODEL_THRIFT_FILE='data-models/airavata_data_models.thrift'
-APP_CATALOG_THRIFT_FILE='data-models/app-catalog-models/app_catalog_models.thrift'
-RESOURCE_CATALOG_THRIFT_FILE='data-models/resource-catalog-models/resource_catalog_models.thrift'
-WORKFLOW_THRIFT_FILE='data-models/workflow-models/workflow_data_model.thrift'
-PROFILE_SERVICE_THRIFT_FILE='service-cpis/profile-service/profile-service-cpi.thrift'
+AIRAVATA_API_THRIFT_FILE='/data/airavata-apis/airavata_api.thrift'
+DATAMODEL_THRIFT_FILE='/data/data-models/airavata_data_models.thrift'
+APP_CATALOG_THRIFT_FILE='/data/data-models/app-catalog-models/app_catalog_models.thrift'
+RESOURCE_CATALOG_THRIFT_FILE='/data/data-models/resource-catalog-models/resource_catalog_models.thrift'
+WORKFLOW_THRIFT_FILE='/data/data-models/workflow-models/workflow_data_model.thrift'
+PROFILE_SERVICE_THRIFT_FILE='/data/service-cpis/profile-service/profile-service-cpi.thrift'
 
 DATAMODEL_SRC_DIR='../airavata-api/airavata-data-models/src/main/java'
 JAVA_API_SDK_DIR='../airavata-api/airavata-api-stubs/src/main/java'
@@ -84,7 +78,7 @@ PYTHON_SDK_DIR='../airavata-api/airavata-client-sdks/airavata-python-sdk/src/mai
 # Initialize the thrift arguments.
 #  Since most of the Airavata API and Data Models have includes, use recursive option by default.
 #  Generate all the files in target directory
-THRIFT_ARGS="-r -o ${BASE_TARGET_DIR}"
+THRIFT_ARGS="-r -o /data/${BASE_TARGET_DIR}"
 # Ensure the required target directories exists, if not create.
 mkdir -p ${BASE_TARGET_DIR}
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/97e1e9cd/thrift-interface-descriptions/service-cpis/generate-service-cpi-stubs.sh
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/service-cpis/generate-service-cpi-stubs.sh b/thrift-interface-descriptions/service-cpis/generate-service-cpi-stubs.sh
index 82409e0..574bddd 100755
--- a/thrift-interface-descriptions/service-cpis/generate-service-cpi-stubs.sh
+++ b/thrift-interface-descriptions/service-cpis/generate-service-cpi-stubs.sh
@@ -38,15 +38,9 @@ then
 	exit 0
 fi
 
-# Generation of thrift files will require installing Apache Thrift. Please add thrift to your path.
-#  Verify is thrift is installed, is in the path is at a specified version.
-
 REQUIRED_THRIFT_VERSION='0.9.3'
-if hash thrift &> /dev/null; then
-  THRIFT_EXEC=$(which thrift)
-else
-  THRIFT_EXEC=/usr/local/bin/thrift
-fi
+THRIFT_DOCKER_IMAGE='thrift'
+THRIFT_EXEC="docker run --rm -v $PWD/..:/data $THRIFT_DOCKER_IMAGE:$REQUIRED_THRIFT_VERSION thrift"
 
 VERSION=$($THRIFT_EXEC -version 2>/dev/null | grep -F "${REQUIRED_THRIFT_VERSION}" |  wc -l)
 if [ "$VERSION" -ne 1 ] ; then
@@ -58,13 +52,13 @@ fi
 # Global Constants used across the script
 BASE_TARGET_DIR='target'
 
-PROFILE_SERVICE_THRIFT_FILE='profile-service/profile-service-cpi.thrift'
+PROFILE_SERVICE_THRIFT_FILE='/data/service-cpis/profile-service/profile-service-cpi.thrift'
 PROFILE_SERVICE_SRC_DIR='../../airavata-services/profile-service/profile-service-stubs/src/main/java'
 
 # Initialize the thrift arguments.
 #  Since most of the Airavata API and Data Models have includes, use recursive option by default.
 #  Generate all the files in target directory
-THRIFT_ARGS="-r -o ${BASE_TARGET_DIR}"
+THRIFT_ARGS="-r -o /data/service-cpis/${BASE_TARGET_DIR}"
 # Ensure the required target directories exists, if not create.
 mkdir -p ${BASE_TARGET_DIR}
 


[2/3] airavata git commit: AIRAVATA-2431 fixing typo

Posted by ma...@apache.org.
AIRAVATA-2431 fixing typo


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

Branch: refs/heads/thrift-docker
Commit: 349231e0e24df17b62ab2fbbc30b6caf157a6a21
Parents: 65583e8
Author: Marcus Christie <ma...@apache.org>
Authored: Wed Jun 7 14:19:47 2017 -0400
Committer: Marcus Christie <ma...@apache.org>
Committed: Wed Jun 7 14:19:47 2017 -0400

----------------------------------------------------------------------
 .../src/main/java/org/apache/airavata/MigrationManager.java        | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/349231e0/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java
----------------------------------------------------------------------
diff --git a/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java b/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java
index b197c70..0f0175d 100644
--- a/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java
+++ b/modules/user-profile-migration/src/main/java/org/apache/airavata/MigrationManager.java
@@ -235,7 +235,7 @@ public class MigrationManager {
         }
 
         // Add Keycloak Tenant for Gateway
-        System.out.println("Creating Keycloak Tenant for gateway ...")
+        System.out.println("Creating Keycloak Tenant for gateway ...");
         Gateway gatewayWithIdAndSecret = iamAdminServicesClient.setUpGateway(authzToken, gateway, getPasswordCredential());
 
         // Update Gateway profile with the client id and secret