public UpdateStatusResponse activateTenant()

in services/src/main/java/org/apache/custos/service/management/TenantActivationTask.java [144:249]


    public UpdateStatusResponse activateTenant(Tenant tenant, String performedBy, boolean update) {
        GetCredentialRequest getCreRe = GetCredentialRequest.newBuilder()
                .setOwnerId(tenant.getTenantId())
                .setType(Type.CUSTOS)
                .build();

        CredentialMetadata metadata = credentialStoreService.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;
        if (update) {
            iamResponse = iamAdminService.updateTenant(setUpTenantRequest);
        } else {
            iamResponse = iamAdminService.setUPTenant(setUpTenantRequest);
        }

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

        credentialStoreService.putCredential(credentialMetadata);

        String comment = (tenant.getComment() == null || tenant.getComment().trim().isEmpty()) ?
                "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 = iamAdminService.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 = credentialStoreService.getCredential(credentialRequest);

        clientMetadataBuilder.setClientId(creMeta.getId());

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

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

                credentialStoreService.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();
                iamAdminService.configureFederatedIDP(request);
            }
        }

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