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/01 20:15:13 UTC

[2/3] airavata git commit: AIRAVATA-2402 For testing migration, code to recreate a tenant

AIRAVATA-2402 For testing migration, code to recreate a tenant


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

Branch: refs/heads/develop
Commit: 020ecaeb6a2ebbcd8557a7d952ec2efdd8523410
Parents: c076a56
Author: Marcus Christie <ma...@apache.org>
Authored: Wed May 31 17:16:56 2017 -0400
Committer: Marcus Christie <ma...@apache.org>
Committed: Wed May 31 17:16:56 2017 -0400

----------------------------------------------------------------------
 .../client/ProfileServiceClientFactory.java     | 15 ++++
 .../airavata/KeycloakTenantCreationManager.java | 92 ++++++++++++++++++++
 2 files changed, 107 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/020ecaeb/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/client/ProfileServiceClientFactory.java
----------------------------------------------------------------------
diff --git a/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/client/ProfileServiceClientFactory.java b/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/client/ProfileServiceClientFactory.java
index 8a74d25..f41bc77 100644
--- a/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/client/ProfileServiceClientFactory.java
+++ b/airavata-services/profile-service/profile-service-stubs/src/main/java/org/apache/airavata/service/profile/client/ProfileServiceClientFactory.java
@@ -20,6 +20,9 @@
  */
 package org.apache.airavata.service.profile.client;
 
+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.iam.admin.services.cpi.iam_admin_services_cpiConstants;
 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.tenant.cpi.profile_tenant_cpiConstants;
@@ -60,4 +63,16 @@ public class ProfileServiceClientFactory {
             throw new TenantProfileServiceException(e.getMessage());
         }
     }
+
+    public static IamAdminServices.Client createIamAdminServiceClient(String serverHost, int serverPort) throws IamAdminServicesException {
+        try {
+            TTransport transport = new TSocket(serverHost, serverPort);
+            transport.open();
+            TProtocol protocol = new TBinaryProtocol(transport);
+            TMultiplexedProtocol multiplexedProtocol = new TMultiplexedProtocol(protocol, iam_admin_services_cpiConstants.IAM_ADMIN_SERVICES_CPI_NAME);
+            return new IamAdminServices.Client(multiplexedProtocol);
+        } catch (TTransportException e) {
+            throw new IamAdminServicesException(e.getMessage());
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/020ecaeb/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
new file mode 100644
index 0000000..b166a27
--- /dev/null
+++ b/modules/user-profile-migration/src/main/java/org/apache/airavata/KeycloakTenantCreationManager.java
@@ -0,0 +1,92 @@
+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);
+    }
+}