From 3da33dd4863aca906ff428e13060de2ef8662d48 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 4 May 2017 08:43:54 +0200 Subject: [PATCH] Fix problem a repeatable where DS assignment leads to 500. (#501) Signed-off-by: kaizimmerm --- .../mgmt/rest/resource/MgmtTargetResource.java | 14 +++----------- .../rest/resource/MgmtTargetResourceTest.java | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResource.java b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResource.java index 56cec1da6..943af5098 100644 --- a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResource.java +++ b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResource.java @@ -12,7 +12,6 @@ import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo; import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn; import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.Map; @@ -282,17 +281,10 @@ public class MgmtTargetResource implements MgmtTargetRestApi { findTargetWithExceptionIfNotFound(controllerId); final ActionType type = (dsId.getType() != null) ? MgmtRestModelMapper.convertActionType(dsId.getType()) : ActionType.FORCED; - final Iterator changed = this.deploymentManagement - .assignDistributionSet(dsId.getId(), type, dsId.getForcetime(), Lists.newArrayList(controllerId)) - .getAssignedEntity().iterator(); - if (changed.hasNext()) { - return new ResponseEntity<>(HttpStatus.OK); - } - - LOG.error("Target update (ds {} assigment to target {}) failed! Returnd target list is empty.", dsId.getId(), - controllerId); - return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + this.deploymentManagement.assignDistributionSet(dsId.getId(), type, dsId.getForcetime(), + Lists.newArrayList(controllerId)); + return new ResponseEntity<>(HttpStatus.OK); } @Override diff --git a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java index 0cf9743e7..b48934a81 100644 --- a/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java +++ b/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java @@ -1080,16 +1080,27 @@ public class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest } @Test + @Description("Verfies that a DS to target assignment is reflected by the repository and that repeating " + + "the assignment does not change the target.") public void assignDistributionSetToTarget() throws Exception { - testdataFactory.createTarget("fsdfsd"); + Target target = testdataFactory.createTarget(); final DistributionSet set = testdataFactory.createDistributionSet("one"); - mvc.perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/fsdfsd/assignedDS") + mvc.perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/" + target.getControllerId() + "/assignedDS") .content("{\"id\":" + set.getId() + "}").contentType(MediaType.APPLICATION_JSON)) .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()); - assertThat(deploymentManagement.getAssignedDistributionSet("fsdfsd").get()).isEqualTo(set); + assertThat(deploymentManagement.getAssignedDistributionSet(target.getControllerId()).get()).isEqualTo(set); + target = targetManagement.findTargetByControllerID(target.getControllerId()).get(); + + // repeating DS assignment leads again to OK + mvc.perform(post(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/" + target.getControllerId() + "/assignedDS") + .content("{\"id\":" + set.getId() + "}").contentType(MediaType.APPLICATION_JSON)) + .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()); + + // ...but does not change the target + assertThat(targetManagement.findTargetByControllerID(target.getControllerId()).get()).isEqualTo(target); } @Test