Fix already assigned targets (#919)

* Dont count not existing targets as already assigned to DS

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Add test for deploymentManagement

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Delete 404 error message from docs when target is not found

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Add text to implementation notes

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Add assertions to test

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Add expected behaviour to test description

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Refactor deploymentMgmtTest

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Filter out non-existing controllerIds

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Extend test descriptions

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Refactor createTargets method

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Add createTargetAndJsonArray method

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Correct expected test result

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Adapt rest docs

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Correct test

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Only count targets that exist for total and adapt test

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Use only existign targetWithActionTypes for assignment

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>

* Rename targetIds to providedTargetIds

Signed-off-by: Sebastian Firsching <sebastian.firsching@bosch-si.com>
This commit is contained in:
Sebastian Firsching
2020-01-13 12:41:59 +01:00
committed by Dominic Schabel
parent 5feb5873c4
commit 8d3ba68be9
6 changed files with 148 additions and 75 deletions

View File

@@ -279,19 +279,26 @@ public class JpaDeploymentManagement extends JpaActionManagement implements Depl
final AbstractDsAssignmentStrategy assignmentStrategy) {
final JpaDistributionSet distributionSetEntity = getAndValidateDsById(dsID);
final List<String> targetIds = targetsWithActionType.stream().map(TargetWithActionType::getControllerId)
final List<String> providedTargetIds = targetsWithActionType.stream().map(TargetWithActionType::getControllerId)
.distinct().collect(Collectors.toList());
final List<JpaTarget> targetEntities = assignmentStrategy.findTargetsForAssignment(targetIds,
final List<String> existingTargetIds = Lists.partition(providedTargetIds, Constants.MAX_ENTRIES_IN_STATEMENT)
.stream().map(targetRepository::filterNonExistingControllerIds).flatMap(List::stream)
.collect(Collectors.toList());
final List<JpaTarget> targetEntities = assignmentStrategy.findTargetsForAssignment(existingTargetIds,
distributionSetEntity.getId());
if (targetEntities.isEmpty()) {
return allTargetsAlreadyAssignedResult(distributionSetEntity, targetsWithActionType.size());
return allTargetsAlreadyAssignedResult(distributionSetEntity, existingTargetIds.size());
}
final List<JpaAction> assignedActions = doAssignDistributionSetToTargets(targetsWithActionType, actionMessage,
assignmentStrategy, distributionSetEntity, targetEntities);
return buildAssignmentResult(distributionSetEntity, assignedActions, targetsWithActionType.size());
final List<TargetWithActionType> existingTargetsWithActionType = targetsWithActionType.stream()
.filter(target -> existingTargetIds.contains(target.getControllerId())).collect(Collectors.toList());
final List<JpaAction> assignedActions = doAssignDistributionSetToTargets(existingTargetsWithActionType,
actionMessage, assignmentStrategy, distributionSetEntity, targetEntities);
return buildAssignmentResult(distributionSetEntity, assignedActions, existingTargetsWithActionType.size());
}
private DistributionSetAssignmentResult allTargetsAlreadyAssignedResult(

View File

@@ -271,4 +271,14 @@ public interface TargetRepository extends BaseEntityRepository<JpaTarget, Long>,
@Transactional
@Query("DELETE FROM JpaTarget t WHERE t.tenant = :tenant")
void deleteByTenant(@Param("tenant") String tenant);
/**
* Filters a given list of controllerIds and returns only the existing IDs.
*
* @param controllerIds
* The IDs to be filtered
* @return only the existing controllerIds
*/
@Query("SELECT t.controllerId FROM JpaTarget t WHERE t.controllerId IN ?1")
List<String> filterNonExistingControllerIds(Iterable<String> controllerIds);
}