Publish target assign event (#1136)
* Throw the TargetAssignDistributionSetEvent even if there are actions in CANCELING state present. Filter the actions on the receiver side. In this case at the DMF. Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io> * Fix deploymentManagementTest Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io> * Add debug logs and fix tests to verify correct DMF message behaviour Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io> * Extend test case for the DMF in case the cancel is confirmed by the device Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io> * Remove unsued import Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io> * Fix review findings by filtering the list of targets first before querying the database for distribution set and software module. Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io> * flip list verification logic Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io> * Refactor amqp tests Signed-off-by: Michael Herdt <Michael.Herdt@bosch.io>
This commit is contained in:
@@ -505,4 +505,15 @@ public interface DeploymentManagement {
|
||||
@PreAuthorize(SpringEvalExpressions.IS_SYSTEM_CODE)
|
||||
int deleteActionsByStatusAndLastModifiedBefore(@NotNull Set<Action.Status> status, long lastModified);
|
||||
|
||||
/**
|
||||
* Checks if there is an action for the device with the given controller ID that
|
||||
* is in the {@link Action.Status#CANCELING} state.
|
||||
*
|
||||
* @param controllerId
|
||||
* of target
|
||||
* @return if actions in CANCELING state are present
|
||||
*/
|
||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||
boolean hasPendingCancellations(@NotEmpty String controllerId);
|
||||
|
||||
}
|
||||
|
||||
@@ -830,6 +830,12 @@ public class JpaDeploymentManagement extends JpaActionManagement implements Depl
|
||||
return deleteQuery.executeUpdate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPendingCancellations(String controllerId) {
|
||||
return actionRepository.existsByTargetControllerIdAndStatusAndActiveIsTrue(controllerId,
|
||||
Action.Status.CANCELING);
|
||||
}
|
||||
|
||||
private static String getQueryForDeleteActionsByStatusAndLastModifiedBeforeString(final Database database) {
|
||||
return QUERY_DELETE_ACTIONS_BY_STATE_AND_LAST_MODIFIED.getOrDefault(database,
|
||||
QUERY_DELETE_ACTIONS_BY_STATE_AND_LAST_MODIFIED_DEFAULT);
|
||||
|
||||
@@ -167,7 +167,7 @@ public class OnlineDsAssignmentStrategy extends AbstractDsAssignmentStrategy {
|
||||
private DistributionSetAssignmentResult sendDistributionSetAssignedEvent(
|
||||
final DistributionSetAssignmentResult assignmentResult) {
|
||||
final List<Action> filteredActions = filterCancellations(assignmentResult.getAssignedEntity())
|
||||
.filter(action -> !hasPendingCancellations(action.getTarget())).collect(Collectors.toList());
|
||||
.collect(Collectors.toList());
|
||||
final DistributionSet set = assignmentResult.getDistributionSet();
|
||||
sendTargetAssignDistributionSetEvent(set.getTenant(), set.getId(), filteredActions);
|
||||
return assignmentResult;
|
||||
@@ -184,11 +184,6 @@ public class OnlineDsAssignmentStrategy extends AbstractDsAssignmentStrategy {
|
||||
eventPublisherHolder.getApplicationId(), actions.get(0).isMaintenanceWindowAvailable())));
|
||||
}
|
||||
|
||||
private boolean hasPendingCancellations(final Target target) {
|
||||
return actionRepository.existsByTargetControllerIdAndStatusAndActiveIsTrue(target.getControllerId(),
|
||||
Status.CANCELING);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to fire a {@link MultiActionCancelEvent}. This method may only be
|
||||
* called if the Multi-Assignments feature is enabled.
|
||||
|
||||
@@ -945,8 +945,8 @@ public class DeploymentManagementTest extends AbstractJpaIntegrationTest {
|
||||
@Expect(type = CancelTargetAssignmentEvent.class, count = 4 * 2),
|
||||
@Expect(type = DistributionSetCreatedEvent.class, count = 3),
|
||||
@Expect(type = SoftwareModuleCreatedEvent.class, count = 9),
|
||||
@Expect(type = TargetAssignDistributionSetEvent.class, count = 2) })
|
||||
public void mutipleDeployments() throws InterruptedException {
|
||||
@Expect(type = TargetAssignDistributionSetEvent.class, count = 3) })
|
||||
public void multipleDeployments() throws InterruptedException {
|
||||
final String undeployedTargetPrefix = "undep-T";
|
||||
final int noOfUndeployedTargets = 5;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user