in services/src/main/java/org/apache/custos/service/management/TenantManagementService.java [227:329]
public Tenant updateTenant(UpdateTenantRequest request) {
try {
Tenant tenant = request.getBody();
tenant = tenant.toBuilder().setTenantId(request.getTenantId()).build();
org.apache.custos.core.tenant.profile.api.GetTenantRequest tenantRequest = org.apache.custos.core.tenant.profile.api.GetTenantRequest
.newBuilder()
.setTenantId(request.getTenantId()).build();
GetTenantResponse tenantResponse = tenantProfileService.getTenant(tenantRequest);
if (tenantResponse.getTenant() == null && tenantResponse.getTenant().getTenantId() == 0) {
String msg = "Cannot find tenant with Tenant name" + tenant.getClientName();
LOGGER.error(msg);
throw new EntityNotFoundException(msg);
}
Tenant exTenant = tenantResponse.getTenant();
tenant = tenant.toBuilder().setTenantStatus(exTenant.getTenantStatus()).build();
GetCredentialRequest passwordRequest = GetCredentialRequest
.newBuilder()
.setId(tenant.getAdminUsername())
.setOwnerId(tenant.getTenantId())
.setType(Type.INDIVIDUAL)
.build();
CredentialMetadata metadata = credentialStoreService.getCredential(passwordRequest);
if (metadata != null && metadata.getSecret() != null) {
tenant = tenant.toBuilder().setAdminPassword(metadata.getSecret()).build();
}
Tenant updateTenant = tenantProfileService.updateTenant(tenant);
GetCredentialRequest clientIdRequest = GetCredentialRequest.newBuilder()
.setOwnerId(tenant.getTenantId())
.setType(Type.CUSTOS).build();
CredentialMetadata idMeta = credentialStoreService.getCredential(clientIdRequest);
tenant = tenant.toBuilder().setClientId(idMeta.getId()).build();
if (tenant.getTenantStatus().equals(TenantStatus.ACTIVE)) {
tenantActivationTask.activateTenant(updateTenant, Constants.GATEWAY_ADMIN, true);
GetCredentialRequest credentialRequest = GetCredentialRequest.newBuilder()
.setOwnerId(tenant.getTenantId())
.setId(request.getClientId())
.setType(Type.IAM).build();
CredentialMetadata iamCredential = credentialStoreService.getCredential(credentialRequest);
GetUserManagementSATokenRequest userManagementSATokenRequest = GetUserManagementSATokenRequest
.newBuilder()
.setClientId(iamCredential.getId())
.setClientSecret(iamCredential.getSecret())
.setTenantId(request.getTenantId())
.build();
AuthToken token = identityService.getUserManagementServiceAccountAccessToken(userManagementSATokenRequest);
if (token != null && token.getAccessToken() != null) {
UserSearchMetadata userSearchMetadata = UserSearchMetadata
.newBuilder()
.setUsername(tenant.getAdminUsername())
.build();
UserSearchRequest searchRequest = UserSearchRequest.newBuilder().
setTenantId(request.getTenantId())
.setPerformedBy(Constants.GATEWAY_ADMIN)
.setAccessToken(token.getAccessToken())
.setUser(userSearchMetadata)
.build();
UserRepresentation userRepresentation = iamAdminService.getUser(searchRequest);
UserProfile profile = convertToProfile(userRepresentation);
UserProfileRequest userProfileRequest = UserProfileRequest
.newBuilder()
.setProfile(profile)
.setPerformedBy(Constants.GATEWAY_ADMIN)
.setTenantId(request.getTenantId())
.build();
UserProfile userProfile = userProfileService.getUserProfile(userProfileRequest);
if (userProfile == null || StringUtils.isBlank(userProfile.getUsername())) {
userProfileService.createUserProfile(userProfileRequest);
} else {
userProfileService.updateUserProfile(userProfileRequest);
}
}
}
return tenant;
} catch (Exception ex) {
String msg = "Error occurred at updateTenant with the Id: " + request.getTenantId();
LOGGER.error(msg, ex);
throw new IllegalArgumentException(msg, ex);
}
}