Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.opendevstack.component_catalog.server.model.ProvisioningDeleteRequest;
import org.opendevstack.component_catalog.server.model.ProvisioningStatusUpdateRequest;
import org.opendevstack.component_catalog.server.services.ProvisionerActionsService;
import org.opendevstack.component_catalog.server.services.provisioner.ProjectComponentRequest;
import org.opendevstack.component_catalog.server.services.provisioner.Status;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
Expand Down Expand Up @@ -40,9 +41,15 @@ public ResponseEntity<Void> notifyProvisioningStatusUpdate(String projectKey,
var normalizedComponentUrl = provisioningStatusUpdateRequest.getComponentUrl().orElse(Strings.EMPTY);
var parameters = map(provisioningStatusUpdateRequest);

provisionerActionsService.updateComponentProvisioningStatus(normalizedProjectKey, Status.valueOf(status),
provisioningStatusUpdateRequest.getComponentId(), provisioningStatusUpdateRequest.getCatalogItemId(),
normalizedComponentUrl, parameters);
var request = ProjectComponentRequest.builder()
.componentId(provisioningStatusUpdateRequest.getComponentId())
.catalogItemId(provisioningStatusUpdateRequest.getCatalogItemId())
.status(Status.valueOf(status))
.componentUrl(normalizedComponentUrl)
.parameters(parameters)
.build();

provisionerActionsService.updateComponentProvisioningStatus(normalizedProjectKey, request);

return ResponseEntity.ok().build();
}
Expand All @@ -58,9 +65,15 @@ public ResponseEntity<Void> notifyProvisioningStatusUpdatePartially(String proje
var normalizedComponentUrl = provisioningStatusUpdateRequest.getComponentUrl().orElse(Strings.EMPTY);
var parameters = map(provisioningStatusUpdateRequest);

provisionerActionsService.updatePartiallyComponentProvisioningStatus(normalizedProjectKey, Status.valueOf(status),
provisioningStatusUpdateRequest.getComponentId(), provisioningStatusUpdateRequest.getCatalogItemId(),
normalizedComponentUrl, provisioningStatusUpdateRequest.getWorkflowJobId().orElse(""), parameters);
var request = ProjectComponentRequest.builder()
.componentId(provisioningStatusUpdateRequest.getComponentId())
.catalogItemId(provisioningStatusUpdateRequest.getCatalogItemId())
.status(Status.valueOf(status))
.componentUrl(normalizedComponentUrl)
.parameters(parameters)
.build();

provisionerActionsService.updatePartiallyComponentProvisioningStatus(normalizedProjectKey, request);

return ResponseEntity.ok().build();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.opendevstack.component_catalog.server.facade;

import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.tuple.Pair;
import org.jspecify.annotations.NonNull;
Expand All @@ -10,6 +9,7 @@
import org.opendevstack.component_catalog.server.services.ProjectsInfoService;
import org.opendevstack.component_catalog.server.services.catalog.CatalogItemUserActionGroupsRestriction;
import org.opendevstack.component_catalog.server.services.catalog.common.UserActionEntityRestrictions;
import org.opendevstack.component_catalog.server.services.provisioner.Parameter;
import org.opendevstack.component_catalog.server.services.restrictions.evaluators.EvaluationRestrictions;
import org.opendevstack.component_catalog.server.services.restrictions.evaluators.GroupsRestrictionsEvaluator;
import org.opendevstack.component_catalog.server.services.restrictions.evaluators.RestrictionsParams;
Expand Down Expand Up @@ -42,9 +42,9 @@ public ProvisionerActionsApiFacade(ProjectsInfoService projectsInfoService,
}


public static @NonNull List<Pair<@NotNull String, @NotNull List<String>>> map(ProvisioningStatusUpdateRequest provisioningStatusUpdateRequest) {
public static @NonNull List<Parameter> map(ProvisioningStatusUpdateRequest provisioningStatusUpdateRequest) {
return provisioningStatusUpdateRequest.getParameters().stream()
.map(parameter -> Pair.of(parameter.getName(), parameter.getValues()))
.map(param -> Parameter.builder().name(param.getName()).values(param.getValues()).build())
.toList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@
import org.apache.commons.lang3.StringUtils;
import org.opendevstack.component_catalog.server.services.exceptions.InvalidComponentStateException;
import org.opendevstack.component_catalog.server.services.exceptions.InvalidEntityException;
import org.opendevstack.component_catalog.server.services.provisioner.Parameter;
import org.opendevstack.component_catalog.server.services.provisioner.ProjectComponent;
import org.opendevstack.component_catalog.server.services.provisioner.ProjectComponents;
import org.opendevstack.component_catalog.server.services.provisioner.Status;
import org.opendevstack.component_catalog.server.services.provisioner.*;
import org.springframework.stereotype.Service;

import java.util.Base64;
Expand All @@ -30,25 +27,23 @@ public ProjectComponents createNewComponent() {

@SneakyThrows
public ProjectComponents addNewComponent(ProjectComponents projectComponents,
String componentId,
String catalogItemId,
Status status,
String componentUrl,
List<Parameter> parameters) {
var catalogItemIdWithoutBranch = getRepoPathFromCatalogItemId(catalogItemId);
var branchReference = getBranchRefFromCatalogItemId(catalogItemId);
ProjectComponentRequest request) {
var catalogItemIdWithoutBranch = getRepoPathFromCatalogItemId(request.getCatalogItemId());
var branchReference = getBranchRefFromCatalogItemId(request.getCatalogItemId());

var updatedComponents = Optional.ofNullable(projectComponents.getComponents())
.map(HashMap::new)
.orElse(new HashMap<>());

updatedComponents.put(componentId, ProjectComponent.builder()
.componentId(componentId)
updatedComponents.put(request.getComponentId(), ProjectComponent.builder()
.componentId(request.getComponentId())
.catalogItemId(catalogItemIdWithoutBranch)
.status(status)
.status(request.getStatus())
.catalogItemRef(branchReference)
.componentUrl(componentUrl)
.parameters(parameters)
.componentUrl(request.getComponentUrl())
.createdAt(request.getCreatedAt())
.updatedAt(request.getUpdatedAt())
.parameters(request.getParameters())
.build());

var updatedProjectComponents = ProjectComponents.builder()
Expand All @@ -62,21 +57,17 @@ public ProjectComponents addNewComponent(ProjectComponents projectComponents,

@SneakyThrows
public ProjectComponents updateExistingComponent(ProjectComponents projectComponents,
String componentId,
String catalogItemId,
Status status,
String componentUrl,
List<Parameter> parameters) {
ProjectComponentRequest request) {

Map<String, ProjectComponent> components = projectComponents.getComponents();

if (!components.containsKey(componentId)) {
throw new InvalidComponentStateException("Component with id " + componentId + " does not exist");
if (!components.containsKey(request.getComponentId())) {
throw new InvalidComponentStateException("Component with id " + request.getComponentId() + " does not exist");
}

var existing = components.get(componentId);
var catalogItemIdWithoutBranch = getRepoPathFromCatalogItemId(catalogItemId);
var branchReference = getBranchRefFromCatalogItemId(catalogItemId);
var existing = components.get(request.getComponentId());
var catalogItemIdWithoutBranch = getRepoPathFromCatalogItemId(request.getCatalogItemId());
var branchReference = getBranchRefFromCatalogItemId(request.getCatalogItemId());

if (!existing.getCatalogItemId().equals(catalogItemIdWithoutBranch)) {
return projectComponents;
Expand All @@ -85,14 +76,16 @@ public ProjectComponents updateExistingComponent(ProjectComponents projectCompon
ProjectComponent updated = ProjectComponent.builder()
.componentId(existing.getComponentId())
.catalogItemId(existing.getCatalogItemId())
.status(status)
.status(request.getStatus())
.catalogItemRef(branchReference)
.componentUrl(StringUtils.isBlank(componentUrl) ? existing.getComponentUrl() : componentUrl)
.parameters(parameters)
.componentUrl(StringUtils.isBlank(request.getComponentUrl()) ? existing.getComponentUrl() : request.getComponentUrl())
.createdAt(request.getCreatedAt())
.updatedAt(request.getUpdatedAt())
.parameters(request.getParameters())
.build();

Map<String, ProjectComponent> updatedMap = new HashMap<>(components);
updatedMap.put(componentId, updated);
updatedMap.put(request.getComponentId(), updated);

return ProjectComponents.builder()
.components(updatedMap)
Expand All @@ -101,28 +94,16 @@ public ProjectComponents updateExistingComponent(ProjectComponents projectCompon

@SneakyThrows
public ProjectComponents updatePartiallyExistingComponent(ProjectComponents projectComponents,
String componentId,
String catalogItemId,
Status status,
String componentUrl,
String workflowJobId,
List<Parameter> parameters) {
ProjectComponentRequest request) {

validateComponentExists(projectComponents, componentId);
validateComponentExists(projectComponents, request.getComponentId());

Map<String, ProjectComponent> updatedMap = projectComponents.getComponents()
.entrySet()
.stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> updateComponentIfMatch(
entry,
componentId,
catalogItemId,
status,
componentUrl,
workflowJobId,
parameters)
entry -> updateComponentIfMatch(entry, request)
));

return ProjectComponents.builder()
Expand Down Expand Up @@ -169,25 +150,22 @@ protected String getRepoPathFromCatalogItemId(String catalogItemId) throws Inval
}

private ProjectComponent updateComponentIfMatch(Map.Entry<String, ProjectComponent> entry,
String componentId,
String catalogItemId,
Status status,
String componentUrl,
String workflowJobId,
List<Parameter> parameters) {

if (!entry.getKey().equals(componentId)) {
ProjectComponentRequest request) {

if (!entry.getKey().equals(request.getComponentId())) {
return entry.getValue(); // leave unchanged
}

return ProjectComponent.builder()
.componentId(entry.getValue().getComponentId())
.catalogItemId(entry.getValue().getCatalogItemId())
.status(status)
.catalogItemRef(resolveCatalogItemRef(entry.getValue(), catalogItemId))
.componentUrl(resolveComponentUrl(entry.getValue(), componentUrl))
.workflowJobId(resolveWorkflowJobId(entry.getValue(), workflowJobId))
.parameters(resolveParameters(entry.getValue(), parameters))
.status(request.getStatus())
.catalogItemRef(resolveCatalogItemRef(entry.getValue(), request.getCatalogItemId()))
.componentUrl(resolveComponentUrl(entry.getValue(), request.getComponentUrl()))
.workflowJobId(resolveWorkflowJobId(entry.getValue(), request.getWorkflowJobId()))
.createdAt(request.getCreatedAt())
.updatedAt(request.getUpdatedAt())
.parameters(resolveParameters(entry.getValue(), request.getParameters()))
.build();
}

Expand Down
Loading
Loading