diff --git a/src/main/java/org/opendevstack/component_provisioner/server/facade/ProvisionResultsApiFacade.java b/src/main/java/org/opendevstack/component_provisioner/server/facade/ProvisionResultsApiFacade.java index c48b1cb..b7962f0 100644 --- a/src/main/java/org/opendevstack/component_provisioner/server/facade/ProvisionResultsApiFacade.java +++ b/src/main/java/org/opendevstack/component_provisioner/server/facade/ProvisionResultsApiFacade.java @@ -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) { @@ -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() @@ -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; diff --git a/src/main/java/org/opendevstack/component_provisioner/server/facade/ProvisionerActionsApiFacade.java b/src/main/java/org/opendevstack/component_provisioner/server/facade/ProvisionerActionsApiFacade.java index ba940f7..484da99 100644 --- a/src/main/java/org/opendevstack/component_provisioner/server/facade/ProvisionerActionsApiFacade.java +++ b/src/main/java/org/opendevstack/component_provisioner/server/facade/ProvisionerActionsApiFacade.java @@ -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; @@ -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; @@ -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); @@ -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) { @@ -198,6 +198,16 @@ 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(""); @@ -205,8 +215,7 @@ private ProvisionActionWrapper addProvisionWorkflowWrapper(ProvisionActionWrappe 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() @@ -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) diff --git a/src/main/java/org/opendevstack/component_provisioner/server/mappers/EntitiesMapper.java b/src/main/java/org/opendevstack/component_provisioner/server/mappers/EntitiesMapper.java index 6c6b768..f8fcdcf 100644 --- a/src/main/java/org/opendevstack/component_provisioner/server/mappers/EntitiesMapper.java +++ b/src/main/java/org/opendevstack/component_provisioner/server/mappers/EntitiesMapper.java @@ -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); }; diff --git a/src/test/java/org/opendevstack/component_provisioner/server/facade/ProvisionResultsApiFacadeTest.java b/src/test/java/org/opendevstack/component_provisioner/server/facade/ProvisionResultsApiFacadeTest.java index f4d35ab..8650158 100644 --- a/src/test/java/org/opendevstack/component_provisioner/server/facade/ProvisionResultsApiFacadeTest.java +++ b/src/test/java/org/opendevstack/component_provisioner/server/facade/ProvisionResultsApiFacadeTest.java @@ -817,8 +817,6 @@ void givenWrapperWorkflow_whenAddDeletionWrapperWorkflowParametersIsCalled_thenD .toList(); assertThat(dispatchedSet).containsAll(expectedParamNames); - - assertThat(dispatchedSet).contains("notifications_group_id"); }