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 @@ -225,6 +225,7 @@ public void validate(String projectKey, String componentId, String deletionWorkf
public void addSystemParametersToAction(String projectKey, CreateIncidentAction action) {
addClusterLocationParameter(projectKey, action);
addCallerParameter(action);
addNotificationsGroupIdParameter(projectKey, action);
}

private void addClusterLocationParameter(String projectKey, CreateIncidentAction action) {
Expand Down Expand Up @@ -292,7 +293,6 @@ private void addDeletionWrapperWorkflowParameters(String catalogItemId,
);
}
var dispatchedWorkflowParams = action.getParameters().stream().map(CreateIncidentParameter::getName).collect(Collectors.toSet());
dispatchedWorkflowParams.add("notifications_group_id"); // This param is added later by the entitiesMapper, so we need to manually add it

var allParams = new ArrayList<>(action.getParameters());
var createIncidentParamDispatchedWorkflowParams = CreateIncidentParameter.builder()
Expand All @@ -314,6 +314,14 @@ private void addCallerParameter(CreateIncidentAction action) {
.build());
}

private void addNotificationsGroupIdParameter(String projectKey, CreateIncidentAction action) {
action.addParametersItem(CreateIncidentParameter.builder()
.name("notifications_group_id")
.type(ParameterType.STRING.getValue())
.value(projectKey)
.build());
}

public String getParameterString(CreateIncidentAction createIncidentAction, String parameterName) {
if (createIncidentAction == null || createIncidentAction.getParameters() == null) {
return Strings.EMPTY;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import org.opendevstack.component_provisioner.server.controllers.validators.ParameterType;
import org.opendevstack.component_provisioner.server.controllers.validators.ProvisionerActionsApiValidator;
import org.opendevstack.component_provisioner.server.mappers.EntitiesMapper;
import org.opendevstack.component_provisioner.server.model.CreateIncidentParameter;
import org.opendevstack.component_provisioner.server.model.ProvisionAction;
import org.opendevstack.component_provisioner.server.model.ProvisionActionParameter;
import org.opendevstack.component_provisioner.server.model.ProvisionActionResponse;
Expand All @@ -25,7 +24,6 @@
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClientException;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
Expand Down Expand Up @@ -60,8 +58,9 @@ public AwxResponse triggerProvisionAction(ProvisionAction provisionAction) {
var systemParametersActionWrapper = addSystemParametersToAction(resolvedActionWrapper);
var requiredCatalogItemParamsWrapper = addMandatoryCatalogItemParamsIfMissing(systemParametersActionWrapper, catalogItem);
var workflowWrapperParamsActionWrapper = addProvisionWorkflowWrapper(requiredCatalogItemParamsWrapper);
provisionerActionsApiValidator.validateWorkflowPresence(workflowWrapperParamsActionWrapper.toProvisionAction());
provisionerActionsApiValidator.validateMandatoryFields(workflowWrapperParamsActionWrapper.toProvisionAction(), catalogItem);
var workflowWrapperParamsAction = workflowWrapperParamsActionWrapper.toProvisionAction();
provisionerActionsApiValidator.validateWorkflowPresence(workflowWrapperParamsAction);
provisionerActionsApiValidator.validateMandatoryFields(workflowWrapperParamsAction, catalogItem);
var updateProvisionActionWithoutPlaceholdersWrapper = placeholderPostProcessor.process(workflowWrapperParamsActionWrapper);
var updatedProvisionActionWithOdsApiParametersWrapper = replaceParametersService.replaceProvisioningParametersFromOdsApi(updateProvisionActionWithoutPlaceholdersWrapper);

Expand Down Expand Up @@ -117,10 +116,11 @@ public ProvisionActionWrapper addSystemParametersToAction(ProvisionActionWrapper
var locationProvisionWrapper = addClusterLocationToAction(provisionActionWrapper);
var callerProvisionWrapper = addCallerToAction(locationProvisionWrapper);
var bearerTokenWrapper = addBearerTokenToActions(callerProvisionWrapper);
var notificationsGroupIdWrapper = addNotificationsGroupIdToAction(bearerTokenWrapper);

log.debug("Added system parameters to provision action: '{}'", bearerTokenWrapper);
log.debug("Added system parameters to provision action: '{}'", notificationsGroupIdWrapper);

return bearerTokenWrapper;
return notificationsGroupIdWrapper;
}

private void updateAwxJobIdIntoProjectComponents(ProvisionActionWrapper provisionActionWrapper, AwxResponse awxResponse) {
Expand Down Expand Up @@ -198,15 +198,24 @@ private ProvisionActionWrapper addBearerTokenToActions(ProvisionActionWrapper pr
return provisionActionWrapper.cloneWithParameters(bearerTokenParameter);
}

private ProvisionActionWrapper addNotificationsGroupIdToAction(ProvisionActionWrapper provisionActionWrapper) {
var notificationsGroupIdParameter = ProvisionActionParameter.builder()
.name("notifications_group_id")
.type(ParameterType.STRING.getValue())
.value(provisionActionWrapper.getProjectKey())
.build();

return provisionActionWrapper.cloneWithParameters(notificationsGroupIdParameter);
}

private ProvisionActionWrapper addProvisionWorkflowWrapper(ProvisionActionWrapper provisionActionWrapper) {
var workflowIdToDispatch = Optional.ofNullable(provisionActionWrapper.getWorkflow()).orElse("");
var workflowNameToDispatch = Optional.ofNullable(provisionActionWrapper.getWorkflowName()).orElse("");
var workflowTimeout = Optional.ofNullable(provisionActionWrapper.getParameterValue("workflow_timeout_seconds")).orElse("");

var provisionActionWrapperWithoutWorkflowInfo = provisionActionWrapper
.cloneWithoutParameterByName("workflow")
.cloneWithoutParameterByName("workflow_name")
.cloneWithoutParameterByName("workflow_timeout_seconds");
.cloneWithoutParameterByName("workflow_name");

var parametersToAdd = new java.util.ArrayList<>(List.of(
ProvisionActionParameter.builder()
Expand Down Expand Up @@ -245,7 +254,7 @@ private ProvisionActionWrapper addProvisionWorkflowWrapper(ProvisionActionWrappe
}

var dispatchedWorkflowParams = provisionActionWrapperWithoutWorkflowInfo.getParametersMap().values().stream().map(ProvisionActionParameter::getName).collect(Collectors.toSet());
dispatchedWorkflowParams.add("notifications_group_id"); // This param is added later by the entitiesMapper, so we need to manually add it

var provisionParamDispatchedWorkflowParams = ProvisionActionParameter.builder()
.name("dispatched_workflow_params")
.value(dispatchedWorkflowParams)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,6 @@ private static void setupActionParamsConverters(ObjectMapper objectMapper) {
.mapToEntry(ProvisionActionParameter::getName, ProvisionActionParameter::getValue)
.toMap();

// Supply AWX with the notification group ID for building nats.io subjects
var notificationsGroupId = extraParams.getOrDefault("project_key", "MISSING_NOTIFICATIONS_GROUP_ID");

extraParams.put("notifications_group_id", notificationsGroupId);

return uncheckedFrom(objectMapper::writeValueAsString).apply(extraParams);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -817,8 +817,6 @@ void givenWrapperWorkflow_whenAddDeletionWrapperWorkflowParametersIsCalled_thenD
.toList();

assertThat(dispatchedSet).containsAll(expectedParamNames);

assertThat(dispatchedSet).contains("notifications_group_id");
}


Expand Down
Loading