Skip to content

Commit

Permalink
chore: Add new function to update deployment
Browse files Browse the repository at this point in the history
  • Loading branch information
giosava94 committed Jan 10, 2025
1 parent bb98e7d commit 627a203
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

package it.reply.orchestrator.service;

import it.reply.orchestrator.dal.entity.Deployment;
import it.reply.orchestrator.dto.CloudProviderEndpoint;
import it.reply.orchestrator.dto.RankCloudProvidersMessage;
import it.reply.orchestrator.dto.cmdb.CloudProvider;
import it.reply.orchestrator.dto.cmdb.CloudService;
Expand All @@ -32,6 +34,9 @@
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;

import com.google.common.collect.Sets;

import lombok.extern.slf4j.Slf4j;

@Slf4j
Expand Down Expand Up @@ -85,4 +90,12 @@ public CloudProvider fillCloudProviderInfo(String providerId, Set<String> servic
provider.setServices(services);
return provider;
}

@Override
public CloudProvider getUpdatedCloudProviderInfo(Deployment deployment, String organisation, RankCloudProvidersMessage rankCloudProvidersMessage) {
String cloudProviderId = deployment.getCloudProviderName();
CloudProviderEndpoint cloudProviderEndpoint = deployment.getCloudProviderEndpoint();
Set<String> servicesWithSla = Sets.newHashSet(cloudProviderEndpoint.getCpComputeServiceId());
return fillCloudProviderInfo(cloudProviderId, servicesWithSla, organisation, rankCloudProvidersMessage);
};
}
3 changes: 3 additions & 0 deletions src/main/java/it/reply/orchestrator/service/CmdbService.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

package it.reply.orchestrator.service;

import it.reply.orchestrator.dal.entity.Deployment;
import it.reply.orchestrator.dto.RankCloudProvidersMessage;
import it.reply.orchestrator.dto.cmdb.CloudProvider;
import it.reply.orchestrator.dto.cmdb.CloudService;
Expand Down Expand Up @@ -50,5 +51,7 @@ public interface CmdbService {

public CloudProvider fillCloudProviderInfo(String providerId, Set<String> servicesWithSla,
String organisation, RankCloudProvidersMessage rankCloudProvidersMessage);

public CloudProvider getUpdatedCloudProviderInfo(Deployment deployment, String organisation, RankCloudProvidersMessage rankCloudProvidersMessage);

}
33 changes: 30 additions & 3 deletions src/main/java/it/reply/orchestrator/service/CmdbServiceV2Impl.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import it.reply.orchestrator.annotation.ServiceVersion;
import it.reply.orchestrator.config.properties.CmdbProperties;
import it.reply.orchestrator.dal.entity.Deployment;
import it.reply.orchestrator.dal.entity.OidcTokenId;
import it.reply.orchestrator.dto.RankCloudProvidersMessage;
import it.reply.orchestrator.dto.cmdb.CloudProvider;
Expand All @@ -39,6 +40,7 @@
import it.reply.orchestrator.dto.fedreg.Project;
import it.reply.orchestrator.dto.fedreg.Quota;
import it.reply.orchestrator.dto.fedreg.Region;
import it.reply.orchestrator.dto.slam.SlamPreferences;
import it.reply.orchestrator.exception.service.DeploymentException;
import it.reply.orchestrator.service.security.OAuth2TokenService;
import java.net.MalformedURLException;
Expand All @@ -48,6 +50,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -449,14 +452,13 @@ private CloudProvider remapAttributes(Project project) {
@Override
public CloudProvider fillCloudProviderInfo(String providerId, Set<String> servicesWithSla,
String organisation, RankCloudProvidersMessage rankCloudProvidersMessage) {

OidcTokenId requestedWithToken = rankCloudProvidersMessage.getRequestedWithToken();
String userGroup = rankCloudProvidersMessage.getSlamPreferences().getPreferences().get(0).getCustomer();

URI requestUriFedRegProject = UriComponentsBuilder
.fromHttpUrl(cmdbProperties.getUrl() + cmdbProperties.getTenantsListPath())
.queryParam("with_conn", true)
.queryParam("user_group_uid",
rankCloudProvidersMessage.getSlamPreferences().getPreferences().get(0).getCustomer())
.queryParam("user_group_uid", userGroup)
.queryParam("provider_uid", providerId).build().normalize().toUri();

List<Project> projectCall =
Expand All @@ -472,4 +474,29 @@ public CloudProvider fillCloudProviderInfo(String providerId, Set<String> servic
return remapAttributes(projectCall.get(0));
}

@Override
public CloudProvider getUpdatedCloudProviderInfo(Deployment deployment, String organisation, RankCloudProvidersMessage rankCloudProvidersMessage) {
OidcTokenId requestedWithToken = rankCloudProvidersMessage.getRequestedWithToken();
Optional<String> regionName = deployment.getCloudProviderEndpoint().getRegion();
String identityServiceEndpoint = deployment.getCloudProviderEndpoint().getCpEndpoint();

URI requestUriFedRegProject = UriComponentsBuilder
.fromHttpUrl(cmdbProperties.getUrl() + cmdbProperties.getTenantsListPath())
.queryParam("with_conn", true)
.queryParam("region_name", regionName)
.queryParam("identity_service_endpoint", identityServiceEndpoint).build().normalize().toUri();

List<Project> projectCall =
oauth2TokenService.executeWithClientForResult(requestedWithToken, accessToken -> {
HeadersBuilder<?> requestBuilder = RequestEntity.get(requestUriFedRegProject);
if (accessToken != null) {
requestBuilder.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
}
return restTemplate.exchange(requestBuilder.build(),
new ParameterizedTypeReference<List<Project>>() {});
}, OAuth2TokenService.restTemplateTokenRefreshEvaluator).getBody();

return remapAttributes(projectCall.get(0));
};

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,16 @@

import com.google.common.collect.Sets;
import it.reply.orchestrator.dal.entity.Deployment;
import it.reply.orchestrator.dal.entity.OidcEntity;
import it.reply.orchestrator.dal.entity.OidcTokenId;
import it.reply.orchestrator.dal.repository.OidcEntityRepository;
import it.reply.orchestrator.dto.CloudProviderEndpoint;
import it.reply.orchestrator.dto.RankCloudProvidersMessage;
import it.reply.orchestrator.dto.cmdb.CloudProvider;
import it.reply.orchestrator.dto.deployment.DeploymentMessage;
import it.reply.orchestrator.dto.workflow.CloudServiceWf;
import it.reply.orchestrator.dto.workflow.CloudServicesOrderedIterator;
import it.reply.orchestrator.exception.service.DeploymentException;
import it.reply.orchestrator.service.CmdbService;
import it.reply.orchestrator.service.security.OAuth2TokenService;
import it.reply.orchestrator.utils.WorkflowConstants;
Expand All @@ -47,24 +50,22 @@ public class GetCmdbDataUpdate extends BaseDeployCommand {

@Override
public void execute(DelegateExecution execution, DeploymentMessage deploymentMessage) {
OidcTokenId requestedWithToken = deploymentMessage.getRequestedWithToken();
Deployment deployment = getDeployment(deploymentMessage);
CloudProviderEndpoint cloudProviderEndpoint = deployment.getCloudProviderEndpoint();
String cloudProviderId = deployment.getCloudProviderName();
Set<String> serviceWithSla = Sets.newHashSet(cloudProviderEndpoint.getCpComputeServiceId());
//String organisation = oauth2TokenService.getOrganization(
// deploymentMessage.getRequestedWithToken());
deploymentMessage.setChosenCloudProviderEndpoint(deployment.getCloudProviderEndpoint());

OidcTokenId requestedWithToken = deploymentMessage.getRequestedWithToken();
String organisation = Optional.ofNullable(deployment.getUserGroup())
.orElse(oauth2TokenService.getOrganization(deploymentMessage.getRequestedWithToken()));
CloudProvider cloudProvider = cmdbService.fillCloudProviderInfo(cloudProviderId, serviceWithSla,
organisation, new RankCloudProvidersMessage());
.orElse(oauth2TokenService.getOrganization(requestedWithToken));
RankCloudProvidersMessage rankCloudProvidersMessage = new RankCloudProvidersMessage();
rankCloudProvidersMessage.setRequestedWithToken(requestedWithToken);

CloudProvider cloudProvider = cmdbService.getUpdatedCloudProviderInfo(deployment, organisation, rankCloudProvidersMessage);

CloudServicesOrderedIterator cloudServicesOrderedIterator =
new CloudServicesOrderedIterator(cloudProvider.getServices().values().stream().map(
CloudServiceWf::new).collect(Collectors.toList()));
cloudServicesOrderedIterator.next();
deploymentMessage.setCloudServicesOrderedIterator(cloudServicesOrderedIterator);
deploymentMessage.setChosenCloudProviderEndpoint(cloudProviderEndpoint);
}

@Override
Expand Down

0 comments on commit 627a203

Please sign in to comment.