Merge pull request #45 from isururanawaka/microservices_based_impl

minimize update request operations
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService.properties
index 56474d4..73a8905 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/iamAdminCoreService.properties
@@ -11,10 +11,10 @@
 iam.federated.cilogon.issuer=https://cilogon.org
 iam.federated.cilogon.jwksUri=https://cilogon.org/oauth2/certs
 introspection.endpoint=https://custos.scigap.org:32036/identity-management/v1.0.0/token/introspect
-issuer=https://custos.scigap.org:32036/
-authorization.endpoint=https://custos.scigap.org:32036/identity-management/v1.0.0/authorize
-token.endpoint=https://custos.scigap.org:32036/identity-management/v1.0.0/token
-end.session.endpoint=https://custos.scigap.org:32036/identity-management/v1.0.0/logout
-user.info.endpoint=https://custos.scigap.org:32036/user-management/v1.0.0/userinfo
-jwks_uri=https://custos.scigap.org:32036/identity-management/v1.0.0/certs
-registration.endpoint=https://custos.scigap.org:32036/tenant-management/v1.0.0/oauth2/tenant
\ No newline at end of file
+issuer=https://custos.scigap.org/
+authorization.endpoint=https://custos.scigap.org/apiserver/identity-management/v1.0.0/authorize
+token.endpoint=https://custos.scigap.org/apiserver/identity-management/v1.0.0/token
+end.session.endpoint=https://custos.scigap.org/apiserver/identity-management/v1.0.0/logout
+user.info.endpoint=https://custos.scigap.org/apiserver/user-management/v1.0.0/userinfo
+jwks_uri=https://custos.scigap.org/apiserver/identity-management/v1.0.0/certs
+registration.endpoint=https://custos.scigap.org/apiserver/tenant-management/v1.0.0/oauth2/tenant
\ No newline at end of file
diff --git a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService.properties b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService.properties
index 8546f5a..d1c4e17 100644
--- a/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService.properties
+++ b/custos-core-services/utility-services/custos-configuration-service/src/main/resources/identityCoreService.properties
@@ -23,10 +23,10 @@
 iam.server.truststore.path=/home/ubuntu/keystore/keycloak-client-truststore.pkcs12
 iam.server.truststore.password=keycloak
 introspection.endpoint=https://custos.scigap.org:32036/identity-management/v1.0.0/token/introspect
-issuer=https://custos.scigap.org:32036/
-authorization.endpoint=https://custos.scigap.org:32036/identity-management/v1.0.0/authorize
-token.endpoint=https://custos.scigap.org:32036/identity-management/v1.0.0/token
-end.session.endpoint=https://custos.scigap.org:32036/identity-management/v1.0.0/logout
-user.info.endpoint=https://custos.scigap.org:32036/user-management/v1.0.0/userinfo
-jwks_uri=https://custos.scigap.org:32036/identity-management/v1.0.0/certs
-registration.endpoint=https://custos.scigap.org:32036/tenant-management/v1.0.0/oauth2/tenant
+issuer=https://custos.scigap.org/
+authorization.endpoint=https://custos.scigap.org/apiserver/identity-management/v1.0.0/authorize
+token.endpoint=https://custos.scigap.org/apiserver/identity-management/v1.0.0/token
+end.session.endpoint=https://custos.scigap.org/apiserver/identity-management/v1.0.0/logout
+user.info.endpoint=https://custos.scigap.org/apiserver/user-management/v1.0.0/userinfo
+jwks_uri=https://custos.scigap.org/apiserver/identity-management/v1.0.0/certs
+registration.endpoint=https://custos.scigap.org:/apiserver/tenant-management/v1.0.0/oauth2/tenant
diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/DynamicRegistrationValidator.java b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/DynamicRegistrationValidator.java
index 3789949..cdfe8b7 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/DynamicRegistrationValidator.java
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/DynamicRegistrationValidator.java
@@ -93,6 +93,10 @@
 
             String clientId = tenantRequest.getClientId();
 
+            if (clientId == null || clientId.trim().equals("")) {
+                clientId = tenantRequest.getBody().getClientId();
+            }
+
             GetCredentialRequest request = GetCredentialRequest.newBuilder()
                     .setId(clientId)
                     .build();
@@ -105,7 +109,7 @@
 
             Tenant tenant = validateTenant(metadata.getOwnerId(), tenantRequest.getTenantId(), headers);
 
-            return (ReqT) tenantRequest.toBuilder().setTenantId(tenant.getTenantId()).build();
+            return (ReqT) tenantRequest.toBuilder().setTenantId(tenant.getTenantId()).setClientId(clientId).build();
 
         } else if (method.equals("deleteTenant")) {
 
diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/InputValidator.java b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/InputValidator.java
index 8ccc5e5..4059dd2 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/InputValidator.java
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/interceptors/InputValidator.java
@@ -106,6 +106,11 @@
 
         String clientId = tenantRequest.getClientId();
 
+        if (clientId == null || clientId.trim().equals("")) {
+            clientId = tenantRequest.getBody().getClientId();
+        }
+
+        LOGGER.info("CLient Id "+ clientId);
 
         if (clientId == null || clientId.trim().equals("")) {
             throw new MissingParameterException("client_id should not be null", null);
diff --git a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/tasks/TenantActivationTask.java b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/tasks/TenantActivationTask.java
index fb3d491..eabad78 100644
--- a/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/tasks/TenantActivationTask.java
+++ b/custos-integration-services/tenant-management-service-parent/tenant-management-service/src/main/java/org/apache/custos/tenant/management/tasks/TenantActivationTask.java
@@ -216,19 +216,36 @@
         clientMetadataBuilder.setClientId(creMeta.getId());
 
 
-        RegisterClientResponse registerClientResponse = federatedAuthenticationClient
-                .addClient(clientMetadataBuilder.build());
+        if (!update) {
+            RegisterClientResponse registerClientResponse = federatedAuthenticationClient
+                    .addClient(clientMetadataBuilder.build());
 
 
-        CredentialMetadata credentialMetadataCILogon = CredentialMetadata
-                .newBuilder()
-                .setId(registerClientResponse.getClientId())
-                .setSecret(registerClientResponse.getClientSecret())
-                .setOwnerId(tenant.getTenantId())
-                .setType(Type.CILOGON)
-                .build();
+            CredentialMetadata credentialMetadataCILogon = CredentialMetadata
+                    .newBuilder()
+                    .setId(registerClientResponse.getClientId())
+                    .setSecret(registerClientResponse.getClientSecret())
+                    .setOwnerId(tenant.getTenantId())
+                    .setType(Type.CILOGON)
+                    .build();
 
-        credentialStoreServiceClient.putCredential(credentialMetadataCILogon);
+            credentialStoreServiceClient.putCredential(credentialMetadataCILogon);
+
+
+            ConfigureFederateIDPRequest request = ConfigureFederateIDPRequest
+                    .newBuilder()
+                    .setTenantId(tenant.getTenantId())
+                    .setClientID(registerClientResponse.getClientId())
+                    .setClientSec(registerClientResponse.getClientSecret())
+                    .setScope(tenant.getScope())
+                    .setRequesterEmail(tenant.getRequesterEmail())
+                    .setType(FederatedIDPs.CILOGON)
+                    .build();
+            iamAdminServiceClient.configureFederatedIDP(request);
+        } else {
+            federatedAuthenticationClient
+                    .updateClient(clientMetadataBuilder.build());
+        }
 
         org.apache.custos.tenant.profile.service.UpdateStatusRequest updateTenantRequest =
                 org.apache.custos.tenant.profile.service.UpdateStatusRequest.newBuilder()
@@ -236,19 +253,6 @@
                         .setStatus(TenantStatus.ACTIVE)
                         .setUpdatedBy(Constants.SYSTEM)
                         .build();
-
-        ConfigureFederateIDPRequest request = ConfigureFederateIDPRequest
-                .newBuilder()
-                .setTenantId(tenant.getTenantId())
-                .setClientID(registerClientResponse.getClientId())
-                .setClientSec(registerClientResponse.getClientSecret())
-                .setScope(tenant.getScope())
-                .setRequesterEmail(tenant.getRequesterEmail())
-                .setType(FederatedIDPs.CILOGON)
-                .build();
-        iamAdminServiceClient.configureFederatedIDP(request);
-
-
         return profileClient.updateTenantStatus(updateTenantRequest);
     }