diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ActionRepository.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ActionRepository.java index 331fdad5b3..8221fa0ca6 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ActionRepository.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ActionRepository.java @@ -37,19 +37,9 @@ */ @Transactional(readOnly = true) public interface ActionRepository extends BaseEntityRepository, JpaSpecificationExecutor { - - /* - * (non-Javadoc) - * - * @see org.springframework.data.repository.CrudRepository#findAll() - */ - @Override - @EntityGraph(value = "Action.all", type = EntityGraphType.LOAD) - Iterable findAll(); - /** * Retrieves an Action with all lazy attributes. - * + * * @param actionId * the ID of the action * @return the found {@link Action} @@ -67,13 +57,12 @@ public interface ActionRepository extends BaseEntityRepository, Jp * the {@link DistributionSet} on which will be filtered * @return the found {@link Action}s */ - @EntityGraph(value = "Action.all", type = EntityGraphType.LOAD) Page findByDistributionSet(final Pageable pageable, final DistributionSet ds); /** * Retrieves all {@link Action}s which are referring the given * {@link Target}. - * + * * @param pageable * page parameters * @param target @@ -84,8 +73,9 @@ public interface ActionRepository extends BaseEntityRepository, Jp /** * Retrieves all {@link Action}s which are active and referring the given - * {@link Target} in a specified order. - * + * {@link Target} in a specified order. Loads also the lazy + * {@link Action#getDistributionSet()} field. + * * @param pageable * page parameters * @param target @@ -125,14 +115,13 @@ List findActionByTargetAndSoftwareModule(@Param("target") final String t * @return the found {@link UpdateAction}s */ @Query("Select a from Action a where a.target = :target and a.distributionSet = :ds order by a.id") - @EntityGraph(value = "Action.all", type = EntityGraphType.LOAD) Page findByTargetAndDistributionSet(final Pageable pageable, @Param("target") final Target target, @Param("ds") DistributionSet ds); /** * Retrieves all {@link Action}s of a specific target, without pagination * ordered by action ID. - * + * * @param target * to search for * @return a list of actions according to the searched target @@ -143,7 +132,7 @@ Page findByTargetAndDistributionSet(final Pageable pageable, @Param("tar /** * Retrieves all {@link Action}s of a specific target and given active flag * ordered by action ID. - * + * * @param pageable * the pagination parameter * @param target @@ -159,8 +148,9 @@ Page findByActiveAndTarget(Pageable pageable, @Param("target") Target ta /** * Retrieves all {@link Action}s of a specific target and given active flag - * ordered by action ID. - * + * ordered by action ID. Loads also the lazy + * {@link Action#getDistributionSet()} field. + * * @param target * to search for * @param active @@ -174,7 +164,7 @@ Page findByActiveAndTarget(Pageable pageable, @Param("target") Target ta /** * Updates all {@link Action} to inactive for all targets with given ID. - * + * * @param keySet * the list of actions to set inactive * @param targetsIds @@ -190,7 +180,7 @@ Page findByActiveAndTarget(Pageable pageable, @Param("target") Target ta * Switches the status of actions from one specific status into another, * only if the actions are in a specific status. This should be a atomar * operation. - * + * * @param statusToSet * the new status the actions should get * @param targetIds @@ -210,7 +200,7 @@ void switchStatus(@Param("statusToSet") Action.Status statusToSet, @Param("targe * Switches the status of actions from one specific status into another, * only if the actions are in a specific status. This should be a atomar * operation. - * + * * @param statusToSet * the new status the actions should get * @param rollout @@ -227,7 +217,7 @@ void switchStatus(@Param("statusToSet") Action.Status statusToSet, @Param("rollo @Param("active") boolean active, @Param("currentStatus") Action.Status currentStatus); /** - * + * * Retrieves all {@link Action}s which are active and referring to the given * target Ids and distribution set required migration step. * @@ -243,36 +233,24 @@ List findByActiveAndTargetIdInAndActionStatusNotEqualToAndDistributionSe /** * Counts all {@link Action}s referring to the given target. - * + * * @param target * the target to count the {@link Action}s * @return the count of actions referring to the given target */ Long countByTarget(Target target); - /* - * (non-Javadoc) - * - * @see org.springframework.data.repository.CrudRepository#save(java.lang. - * Iterable) - */ @Override @CacheEvict(value = "feedbackReceivedOverTime", allEntries = true) List save(Iterable entities); - /* - * (non-Javadoc) - * - * @see - * org.springframework.data.repository.CrudRepository#save(java.lang.Object) - */ @Override @CacheEvict(value = "feedbackReceivedOverTime", allEntries = true) S save(S entity); /** * Counts all {@link Action}s referring to the given DistributionSet. - * + * * @param distributionSet * DistributionSet to count the {@link Action}s from * @return the count of actions referring to the given distributionSet @@ -281,7 +259,7 @@ List findByActiveAndTargetIdInAndActionStatusNotEqualToAndDistributionSe /** * Counts all {@link Action}s referring to the given rollout. - * + * * @param rollout * the rollout to count the {@link Action}s from * @return the count of actions referring to the given rollout @@ -293,7 +271,7 @@ List findByActiveAndTargetIdInAndActionStatusNotEqualToAndDistributionSe * are currently not in the given status. An in-clause statement does not * work with the spring-data, so this is specific usecase regarding to the * rollout-management to find out actions which are not in specific states. - * + * * @param rollout * the rollout the actions are belong to * @param rolloutGroup @@ -312,7 +290,7 @@ Long countByRolloutAndRolloutGroupAndStatusNotAndStatusNotAndStatusNot(Rollout r /** * Counts all actions referring to a given rollout and rolloutgroup. - * + * * @param rollout * the rollout the actions belong to * @param rolloutGroup @@ -323,7 +301,7 @@ Long countByRolloutAndRolloutGroupAndStatusNotAndStatusNotAndStatusNot(Rollout r /** * Counts all actions referring to a given rollout, rolloutgroup and status. - * + * * @param rolloutId * the ID of rollout the actions belong to * @param rolloutGroupId @@ -338,7 +316,7 @@ Long countByRolloutAndRolloutGroupAndStatusNotAndStatusNotAndStatusNot(Rollout r /** * Retrieving all actions referring to a given rollout with a specific * action as parent reference and a specific status. - * + * * Finding all actions of a specific rolloutgroup parent relation. * * @param rollout @@ -355,7 +333,7 @@ List findByRolloutAndRolloutGroupParentAndStatus(Rollout rollout, Rollou /** * Retrieves all actions for a specific rollout and in a specific status. - * + * * @param rollout * the rollout the actions beglong to * @param actionStatus @@ -367,7 +345,7 @@ List findByRolloutAndRolloutGroupParentAndStatus(Rollout rollout, Rollou /** * Get list of objects which has details of status and count of targets in * each status in specified rollout. - * + * * @param rolloutId * id of {@link Rollout} * @return list of objects with status and target count @@ -378,7 +356,7 @@ List findByRolloutAndRolloutGroupParentAndStatus(Rollout rollout, Rollou /** * Get list of objects which has details of status and count of targets in * each status in specified rollout. - * + * * @param rolloutId * id of {@link Rollout} * @return list of objects with status and target count @@ -389,7 +367,7 @@ List findByRolloutAndRolloutGroupParentAndStatus(Rollout rollout, Rollou /** * Get list of objects which has details of status and count of targets in * each status in specified rollout group. - * + * * @param rolloutGroupId * id of {@link RolloutGroup} * @return list of objects with status and target count @@ -400,7 +378,7 @@ List findByRolloutAndRolloutGroupParentAndStatus(Rollout rollout, Rollou /** * Get list of objects which has details of status and count of targets in * each status in specified rollout group. - * + * * @param rolloutGroupId * list of id of {@link RolloutGroup} * @return list of objects with status and target count diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java index 172f1c3e16..560549e7ef 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java @@ -378,11 +378,13 @@ private DistributionSetAssignmentResult assignDistributionSetToTargets(@NotNull actionStatusRepository.save(actionStatus); }); - // select updated targets in order to return them + // flush to get action IDs + entityManager.flush(); + // collect updated target and actions IDs in order to return them final DistributionSetAssignmentResult result = new DistributionSetAssignmentResult( targets.stream().map(target -> target.getControllerId()).collect(Collectors.toList()), targets.size(), - controllerIDs.size() - targets.size(), Lists.newArrayList(targetIdsToActions.values()), - targetManagement); + controllerIDs.size() - targets.size(), + targetIdsToActions.values().stream().map(Action::getId).collect(Collectors.toList()), targetManagement); LOG.debug("assignDistribution({}) finished {}", set, result); @@ -391,13 +393,16 @@ private DistributionSetAssignmentResult assignDistributionSetToTargets(@NotNull // detaching as it is not necessary to persist the set itself entityManager.detach(set); - // send distribution set assignment event + sendDistributionSetAssignmentEvent(targets, targetIdsCancellList, targetIdsToActions, softwareModules); + return result; + } + + private void sendDistributionSetAssignmentEvent(final List targets, final Set targetIdsCancellList, + final Map targetIdsToActions, final List softwareModules) { targets.stream().filter(t -> !!!targetIdsCancellList.contains(t.getId())) .forEach(t -> assignDistributionSetEvent(t, targetIdsToActions.get(t.getControllerId()).getId(), softwareModules)); - - return result; } /** @@ -709,8 +714,8 @@ public Action findAction(@NotNull final Long actionId) { } /** - * Get the {@link Action} entity for given actionId with all lazy - * attributes. + * Get the {@link Action} entity for given actionId with all lazy attributes + * (i.e. distributionSet, target, target.assignedDs). * * @param actionId * to be id of the action diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java index ac562131dc..3e61e44997 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java @@ -10,7 +10,6 @@ import java.util.List; -import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.AssignmentResult; import org.eclipse.hawkbit.repository.model.Target; @@ -19,14 +18,11 @@ * information of an assignment and how much of the assignment has been done and * how much of the assignments had already been existed. * - * - * - * */ public class DistributionSetAssignmentResult extends AssignmentResult { private final List assignedTargets; - private final List actions; + private final List actions; private final TargetManagement targetManagement; @@ -48,7 +44,7 @@ public class DistributionSetAssignmentResult extends AssignmentResult { * */ public DistributionSetAssignmentResult(final List assignedTargets, final int assigned, - final int alreadyAssigned, final List actions, final TargetManagement targetManagement) { + final int alreadyAssigned, final List actions, final TargetManagement targetManagement) { super(assigned, alreadyAssigned); this.assignedTargets = assignedTargets; this.actions = actions; @@ -63,9 +59,9 @@ public List getAssignedTargets() { } /** - * @return the actionId + * @return the actionIds */ - public List getActions() { + public List getActions() { return actions; } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java index 0554e6c586..c19b947de6 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java @@ -24,6 +24,7 @@ import javax.persistence.NamedAttributeNode; import javax.persistence.NamedEntityGraph; import javax.persistence.NamedEntityGraphs; +import javax.persistence.NamedSubgraph; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; @@ -34,28 +35,22 @@ /** *

- * Applicable transition changes of the software {@link SoftwareModule} state of - * a {@link Target}, e.g. install, uninstall, update, start, stop, and - * preparations for the transition change, i.e. download. + * Applicable transition changes of the {@link SoftwareModule}s state of a + * {@link Target}, e.g. install, uninstall, update and preparations for the + * transition change, i.e. download. *

* *

- * Actions are managed by the SP server (SPS) and applied to the edge controller - * by the SP controller (SPC). Actions may also be value added commands that are - * nor directly related to SP, e.g. factory reset. + * Actions are managed by the SP server and applied to the targets by the + * client. *

- * - * - * - * - * */ @Table(name = "sp_action", indexes = { @Index(name = "sp_idx_action_01", columnList = "tenant,distribution_set"), @Index(name = "sp_idx_action_02", columnList = "tenant,target,active"), @Index(name = "sp_idx_action_prim", columnList = "tenant,id") }) @NamedEntityGraphs({ @NamedEntityGraph(name = "Action.ds", attributeNodes = { @NamedAttributeNode("distributionSet") }), @NamedEntityGraph(name = "Action.all", attributeNodes = { @NamedAttributeNode("distributionSet"), - @NamedAttributeNode("target") }) }) + @NamedAttributeNode(value = "target", subgraph = "target.ds") }, subgraphs = @NamedSubgraph(name = "target.ds", attributeNodes = @NamedAttributeNode("assignedDistributionSet") ) ) }) @Entity public class Action extends BaseEntity implements Comparable { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DeploymentManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DeploymentManagementTest.java index 46747cd9c9..693a670828 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DeploymentManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DeploymentManagementTest.java @@ -66,6 +66,22 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { @Autowired private EventBus eventBus; + @Test + @Description("Test verifies that the repistory retrieves the action including all defined (lazy) details.") + public void findActionWithLazyDetails() { + final DistributionSet testDs = TestDataUtil.generateDistributionSet("TestDs", "1.0", softwareManagement, + distributionSetManagement, new ArrayList()); + final List testTarget = targetManagement.createTargets(TestDataUtil.generateTargets(1)); + // one action with one action status is generated + final Long actionId = deploymentManagement.assignDistributionSet(testDs, testTarget).getActions().get(0); + final Action action = deploymentManagement.findActionWithDetails(actionId); + + assertThat(action.getDistributionSet()).as("DistributionSet in action").isNotNull(); + assertThat(action.getTarget()).as("Target in action").isNotNull(); + assertThat(action.getTarget().getAssignedDistributionSet()).as("AssignedDistributionSet of target in action") + .isNotNull(); + } + @Test @Description("Test verifies that the custom query to find all actions include the count of action status is working correctly") public void findActionsWithStatusCountByTarget() { @@ -73,7 +89,8 @@ public void findActionsWithStatusCountByTarget() { distributionSetManagement, new ArrayList()); final List testTarget = targetManagement.createTargets(TestDataUtil.generateTargets(1)); // one action with one action status is generated - final Action action = deploymentManagement.assignDistributionSet(testDs, testTarget).getActions().get(0); + final Action action = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(testDs, testTarget).getActions().get(0)); // save 2 action status actionStatusRepository.save(new ActionStatus(action, Status.RETRIEVED, System.currentTimeMillis())); actionStatusRepository.save(new ActionStatus(action, Status.RUNNING, System.currentTimeMillis())); @@ -349,7 +366,7 @@ private Action assignSet(final Target target, final DistributionSet ds) { * test a simple deployment by calling the * {@link TargetRepository#assignDistributionSet(DistributionSet, Iterable)} * and checking the active action and the action history of the targets. - * + * * @throws InterruptedException */ @Test @@ -805,7 +822,7 @@ public void forceSoftAction() { // assign ds to create an action final DistributionSetAssignmentResult assignDistributionSet = deploymentManagement .assignDistributionSet(ds.getId(), ActionType.SOFT, Action.NO_FORCE_TIME, target.getControllerId()); - final Action action = assignDistributionSet.getActions().get(0); + final Action action = deploymentManagement.findActionWithDetails(assignDistributionSet.getActions().get(0)); // verify preparation Action findAction = deploymentManagement.findAction(action.getId()); assertThat(findAction.getActionType()).isEqualTo(ActionType.SOFT); @@ -828,7 +845,7 @@ public void forceAlreadyForcedActionNothingChanges() { // assign ds to create an action final DistributionSetAssignmentResult assignDistributionSet = deploymentManagement .assignDistributionSet(ds.getId(), ActionType.FORCED, Action.NO_FORCE_TIME, target.getControllerId()); - final Action action = assignDistributionSet.getActions().get(0); + final Action action = deploymentManagement.findActionWithDetails(assignDistributionSet.getActions().get(0)); // verify perparation Action findAction = deploymentManagement.findAction(action.getId()); assertThat(findAction.getActionType()).isEqualTo(ActionType.FORCED); @@ -848,7 +865,7 @@ public void forceAlreadyForcedActionNothingChanges() { *

* All created distribution sets are assigned to all targets of the * target list deployedTargets. - * + * * @param undeployedTargetPrefix * prefix to be used as target controller prefix * @param noOfUndeployedTargets diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ReportManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ReportManagementTest.java index bb54500838..0f91fb521f 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ReportManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ReportManagementTest.java @@ -138,7 +138,8 @@ public void targetsFeedbackOverPeriod() { final Target createTarget = targetManagement.createTarget(new Target("t" + month)); final DistributionSetAssignmentResult result = deploymentManagement.assignDistributionSet(distributionSet, Lists.newArrayList(createTarget)); - controllerManagament.registerRetrieved(result.getActions().get(0), + controllerManagament.registerRetrieved( + deploymentManagement.findActionWithDetails(result.getActions().get(0)), "Controller retrieved update action and should start now the download."); } DataReportSeries feedbackReceivedOverTime = reportManagement @@ -158,7 +159,8 @@ public void targetsFeedbackOverPeriod() { final Target createTarget = targetManagement.createTarget(new Target("t2" + month)); final DistributionSetAssignmentResult result = deploymentManagement.assignDistributionSet(distributionSet, Lists.newArrayList(createTarget)); - controllerManagament.registerRetrieved(result.getActions().get(0), + controllerManagament.registerRetrieved( + deploymentManagement.findActionWithDetails(result.getActions().get(0)), "Controller retrieved update action and should start now the download."); } feedbackReceivedOverTime = reportManagement.feedbackReceivedOverTime(DateTypes.perMonth(), from, to); @@ -572,7 +574,7 @@ private class DynamicDateTimeProvider implements DateTimeProvider { /* * (non-Javadoc) - * + * * @see org.springframework.data.auditing.DateTimeProvider#getNow() */ @Override diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java index 3a70441ca2..cdcaff25e6 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java @@ -174,7 +174,7 @@ public void findTargetByControllerIDWithDetails() { final DistributionSetAssignmentResult result = deploymentManagement.assignDistributionSet(set.getId(), "4711"); - final Action action = result.getActions().get(0); + final Action action = deploymentManagement.findActionWithDetails(result.getActions().get(0)); action.setStatus(Status.FINISHED); controllerManagament.addUpdateActionStatus( new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action); @@ -221,7 +221,7 @@ public void createTargetDuplicate() { * verifies, that all {@link TargetTag} of parameter. NOTE: it's accepted * that the target have additional tags assigned to them which are not * contained within parameter tags. - * + * * @param strict * if true, the given targets MUST contain EXACTLY ALL given * tags, AND NO OTHERS. If false, the given targets MUST contain diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/utils/RepositoryDataGenerator.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/utils/RepositoryDataGenerator.java index dffec4df18..d7efa50d54 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/utils/RepositoryDataGenerator.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/utils/RepositoryDataGenerator.java @@ -199,13 +199,14 @@ private List> splitIntoGroups(final List allTargets) { } - private void createActionStatusHistory(final List actions, final int sizeMultiplikator) { + private void createActionStatusHistory(final List actions, final int sizeMultiplikator) { final AtomicInteger counter = new AtomicInteger(); int index = 0; - for (final Action actionGiven : actions) { + for (final Long actionGiven : actions) { // retrieved - Action action = controllerManagement.registerRetrieved(actionGiven, + Action action = controllerManagement.registerRetrieved( + deploymentManagement.findActionWithDetails(actionGiven), "Controller retrieved update action and should start now the download."); // download @@ -260,10 +261,11 @@ private void createActionStatusHistory(final List actions, final int siz } } - private void createSimpleActionStatusHistory(final List actions) { - for (final Action actionGiven : actions) { + private void createSimpleActionStatusHistory(final List actions) { + for (final Long actionGiven : actions) { // retrieved - Action action = controllerManagement.registerRetrieved(actionGiven, + Action action = controllerManagement.registerRetrieved( + deploymentManagement.findActionWithDetails(actionGiven), "Controller retrieved update action and should start now the download."); // close diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/CancelActionTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/CancelActionTest.java index 267b954084..e7b94cb30d 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/CancelActionTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/CancelActionTest.java @@ -56,7 +56,8 @@ public void rootRsCancelActionButContinueAnyway() throws Exception { final List toAssign = new ArrayList(); toAssign.add(savedTarget); - final Action updateAction = deploymentManagement.assignDistributionSet(ds, toAssign).getActions().get(0); + final Action updateAction = deploymentManagement + .findActionWithDetails(deploymentManagement.assignDistributionSet(ds, toAssign).getActions().get(0)); final Action cancelAction = deploymentManagement.cancelAction(updateAction, targetManagement.findTargetByControllerID(savedTarget.getControllerId())); @@ -112,7 +113,8 @@ public void rootRsCancelAction() throws Exception { final List toAssign = new ArrayList(); toAssign.add(savedTarget); - final Action updateAction = deploymentManagement.assignDistributionSet(ds, toAssign).getActions().get(0); + final Action updateAction = deploymentManagement + .findActionWithDetails(deploymentManagement.assignDistributionSet(ds, toAssign).getActions().get(0)); long current = System.currentTimeMillis(); mvc.perform(get("/{tenant}/controller/v1/4712", tenantAware.getCurrentTenant())) @@ -227,7 +229,8 @@ private Action createCancelAction(final String targetid) { final Target savedTarget = targetManagement.createTarget(target); final List toAssign = new ArrayList(); toAssign.add(savedTarget); - final Action updateAction = deploymentManagement.assignDistributionSet(ds, toAssign).getActions().get(0); + final Action updateAction = deploymentManagement + .findActionWithDetails(deploymentManagement.assignDistributionSet(ds, toAssign).getActions().get(0)); return deploymentManagement.cancelAction(updateAction, targetManagement.findTargetByControllerID(savedTarget.getControllerId())); @@ -243,8 +246,8 @@ public void rootRsCancelActionFeedback() throws Exception { final Target savedTarget = targetManagement.createTarget(target); - final Action updateAction = deploymentManagement.assignDistributionSet(ds.getId(), new String[] { "4712" }) - .getActions().get(0); + final Action updateAction = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(ds.getId(), new String[] { "4712" }).getActions().get(0)); // cancel action manually final Action cancelAction = deploymentManagement.cancelAction(updateAction, @@ -340,12 +343,12 @@ public void multipleCancelActionFeedback() throws Exception { final Target savedTarget = targetManagement.createTarget(target); - final Action updateAction = deploymentManagement.assignDistributionSet(ds.getId(), new String[] { "4712" }) - .getActions().get(0); - final Action updateAction2 = deploymentManagement.assignDistributionSet(ds2.getId(), new String[] { "4712" }) - .getActions().get(0); - final Action updateAction3 = deploymentManagement.assignDistributionSet(ds3.getId(), new String[] { "4712" }) - .getActions().get(0); + final Action updateAction = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(ds.getId(), new String[] { "4712" }).getActions().get(0)); + final Action updateAction2 = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(ds2.getId(), new String[] { "4712" }).getActions().get(0)); + final Action updateAction3 = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(ds3.getId(), new String[] { "4712" }).getActions().get(0)); assertThat(actionStatusRepository.findAll()).hasSize(3); @@ -456,8 +459,8 @@ public void tooMuchCancelActionFeedback() throws Exception { final List toAssign = new ArrayList(); toAssign.add(target); - final Action action = deploymentManagement.assignDistributionSet(ds.getId(), new String[] { "4712" }) - .getActions().get(0); + final Action action = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(ds.getId(), new String[] { "4712" }).getActions().get(0)); final Action cancelAction = deploymentManagement.cancelAction(action, targetManagement.findTargetByControllerID(target.getControllerId())); diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/DeploymentBaseTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/DeploymentBaseTest.java index e0a4b8e5c5..2aabb0cbaf 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/DeploymentBaseTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/DeploymentBaseTest.java @@ -484,7 +484,8 @@ public void badDeploymentAction() throws Exception { final DistributionSet savedSet = TestDataUtil.generateDistributionSet("", softwareManagement, distributionSetManagement); - final Action action1 = deploymentManagement.assignDistributionSet(savedSet, toAssign).getActions().get(0); + final Action action1 = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(savedSet, toAssign).getActions().get(0)); mvc.perform( get("/{tenant}/controller/v1/4712/deploymentBase/" + action1.getId(), tenantAware.getCurrentTenant())) .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()); @@ -544,12 +545,12 @@ public void multipleDeplomentActionFeedback() throws Exception { final List toAssign = new ArrayList(); toAssign.add(savedTarget1); - final Action action1 = deploymentManagement.assignDistributionSet(ds1.getId(), new String[] { "4712" }) - .getActions().get(0); - final Action action2 = deploymentManagement.assignDistributionSet(ds2.getId(), new String[] { "4712" }) - .getActions().get(0); - final Action action3 = deploymentManagement.assignDistributionSet(ds3.getId(), new String[] { "4712" }) - .getActions().get(0); + final Action action1 = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(ds1.getId(), new String[] { "4712" }).getActions().get(0)); + final Action action2 = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(ds2.getId(), new String[] { "4712" }).getActions().get(0)); + final Action action3 = deploymentManagement.findActionWithDetails( + deploymentManagement.assignDistributionSet(ds3.getId(), new String[] { "4712" }).getActions().get(0)); Target myT = targetManagement.findTargetByControllerID("4712"); assertThat(myT.getTargetInfo().getUpdateStatus()).isEqualTo(TargetUpdateStatus.PENDING);