public UpdateStatusResponse activateTenant()

in custos-services/custos-integration-services/tenant-management-service/src/main/java/org/apache/custos/tenant/management/tasks/TenantActivationTask.java [150:295]


    public UpdateStatusResponse activateTenant(Tenant tenant, String performedBy, boolean update) {


        GetCredentialRequest getCreRe = GetCredentialRequest.newBuilder().
                setOwnerId(tenant.getTenantId())
                .setType(Type.CUSTOS)
                .build();

        CredentialMetadata metadata = credentialStoreServiceClient.getCredential(getCreRe);


        SetUpTenantRequest setUpTenantRequest = SetUpTenantRequest
                .newBuilder()
                .setTenantId(tenant.getTenantId())
                .setTenantName(tenant.getClientName())
                .setAdminFirstname(tenant.getAdminFirstName())
                .setAdminLastname(tenant.getAdminLastName())
                .setAdminEmail(tenant.getAdminEmail())
                .addAllRedirectURIs(tenant.getRedirectUrisList())
                .setAdminPassword(tenant.getAdminPassword())
                .setAdminUsername(tenant.getAdminUsername())
                .setRequesterEmail(tenant.getRequesterEmail())
                .setTenantURL(tenant.getClientUri())
                .setCustosClientId(metadata.getId())
                .build();

        SetUpTenantResponse iamResponse = null;
        if (update) {
            iamResponse = iamAdminServiceClient.updateTenant(setUpTenantRequest);
        } else {

            iamResponse = iamAdminServiceClient.setUPTenant(setUpTenantRequest);
        }

        CredentialMetadata credentialMetadata = CredentialMetadata
                .newBuilder()
                .setId(iamResponse.getClientId())
                .setSecret(iamResponse.getClientSecret())
                .setOwnerId(tenant.getTenantId())
                .setType(Type.IAM)
                .build();

        credentialStoreServiceClient.putCredential(credentialMetadata);

        String comment = (tenant.getComment() == null || tenant.getComment().trim().equals("")) ?
                "Created by custos" : tenant.getComment();


        String[] scopes = tenant.getScope() != null ? tenant.getScope().split(" ") : new String[0];

        GetCredentialRequest credentialRequest = GetCredentialRequest.newBuilder()
                .setOwnerId(tenant.getTenantId())
                .setType(Type.CILOGON).build();

        String ciLogonRedirectURI = iamAdminServiceClient.getIamServerURL() +
                "realms" + "/" + tenant.getTenantId() + "/" + "broker" + "/" + "oidc" + "/" + "endpoint";


        List<String> arrayList = new ArrayList<>();
        arrayList.add(ciLogonRedirectURI);

        ClientMetadata.Builder clientMetadataBuilder = ClientMetadata
                .newBuilder()
                .setTenantId(tenant.getTenantId())
                .setTenantName(tenant.getClientName())
                .setTenantURI(tenant.getClientUri())
                .setComment(comment)
                .addAllScope(Arrays.asList(scopes))
                .addAllRedirectURIs(arrayList)
                .addAllContacts(tenant.getContactsList())
                .setPerformedBy(performedBy);


        CredentialMetadata creMeta = credentialStoreServiceClient.
                getCredential(credentialRequest);

        clientMetadataBuilder.setClientId(creMeta.getId());


        if (!update) {
            // skip CILOGON client creation for local development
            if (!activeProfile.equalsIgnoreCase("local")) {
                RegisterClientResponse registerClientResponse = federatedAuthenticationClient
                        .addClient(clientMetadataBuilder.build());


                CredentialMetadata credentialMetadataCILogon = CredentialMetadata
                        .newBuilder()
                        .setId(registerClientResponse.getClientId())
                        .setSecret(registerClientResponse.getClientSecret())
                        .setOwnerId(tenant.getTenantId())
                        .setType(Type.CILOGON)
                        .build();

                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);
            }

            PermissionType permissionType = PermissionType
                    .newBuilder()
                    .setId("OWNER")
                    .setName("OWNER")
                    .setDescription("Owner permission type").build();

            PermissionTypeRequest permissionTypeRequest = PermissionTypeRequest
                    .newBuilder()
                    .setPermissionType(permissionType)
                    .setTenantId(tenant.getTenantId())
                    .build();
            sharingClient.createPermissionType(permissionTypeRequest);

            EntityType entityType = EntityType
                    .newBuilder()
                    .setId("SECRET")
                    .setName("SECRET")
                    .setDescription("Secret entity type").build();

            EntityTypeRequest entityTypeRequest = EntityTypeRequest
                    .newBuilder()
                    .setEntityType(entityType)
                    .setTenantId(tenant.getTenantId())
                    .build();
            sharingClient.createEntityType(entityTypeRequest);


        }

        org.apache.custos.tenant.profile.service.UpdateStatusRequest updateTenantRequest =
                org.apache.custos.tenant.profile.service.UpdateStatusRequest.newBuilder()
                        .setTenantId(tenant.getTenantId())
                        .setStatus(TenantStatus.ACTIVE)
                        .setUpdatedBy(Constants.SYSTEM)
                        .build();
        return profileClient.updateTenantStatus(updateTenantRequest);
    }