Skip to content

Commit

Permalink
Fixed broken rollout management API concerning target status map. (ec…
Browse files Browse the repository at this point in the history
…lipse-hawkbit#365)

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
  • Loading branch information
kaizimmerm authored and michahirsch committed Nov 23, 2016
1 parent 54ba359 commit a571656
Show file tree
Hide file tree
Showing 15 changed files with 363 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ public class MgmtRolloutResponseBody extends MgmtNamedEntity {
@JsonProperty(required = true)
private Long totalTargets;

@JsonProperty(required = true)
private final Map<String, Long> totalTargetsPerStatus = new HashMap<>();
@JsonProperty
private Map<String, Long> totalTargetsPerStatus;

/**
* @return the status
Expand Down Expand Up @@ -121,4 +121,12 @@ public Long getTotalTargets() {
public Map<String, Long> getTotalTargetsPerStatus() {
return totalTargetsPerStatus;
}

public void addTotalTargetsPerStatus(final String status, final Long totalTargetCountByStatus) {
if (totalTargetsPerStatus == null) {
totalTargetsPerStatus = new HashMap<>();
}

totalTargetsPerStatus.put(status, totalTargetCountByStatus);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
*/
package org.eclipse.hawkbit.mgmt.json.model.rolloutgroup;

import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.HashMap;
import java.util.Map;

/**
* Model for the rollout group annotated with json-annotations for easier
* serialization and de-serialization.
Expand All @@ -32,34 +32,20 @@ public class MgmtRolloutGroupResponseBody extends MgmtRolloutGroup {

private int totalTargets;

private final Map<String, Long> totalTargetsPerStatus = new HashMap<>();
private Map<String, Long> totalTargetsPerStatus;

/**
* @return the rolloutGroupId
*/
public Long getRolloutGroupId() {
return rolloutGroupId;
}

/**
* @param rolloutGroupId
* the rolloutGroupId to set
*/
public void setRolloutGroupId(final Long rolloutGroupId) {
this.rolloutGroupId = rolloutGroupId;
}

/**
* @return the status
*/
public String getStatus() {
return status;
}

/**
* @param status
* the status to set
*/
public void setStatus(final String status) {
this.status = status;
}
Expand All @@ -68,12 +54,20 @@ public int getTotalTargets() {
return totalTargets;
}

public void setTotalTargets(int totalTargets) {
public void setTotalTargets(final int totalTargets) {
this.totalTargets = totalTargets;
}

public Map<String, Long> getTotalTargetsPerStatus() {
return totalTargetsPerStatus;
}

public void addTotalTargetsPerStatus(final String status, final Long totalTargetCountByStatus) {
if (totalTargetsPerStatus == null) {
totalTargetsPerStatus = new HashMap<>();
}

totalTargetsPerStatus.put(status, totalTargetCountByStatus);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ static List<MgmtRolloutResponseBody> toResponseRollout(final List<Rollout> rollo
return Collections.emptyList();
}

return rollouts.stream().map(MgmtRolloutMapper::toResponseRollout).collect(Collectors.toList());
return rollouts.stream().map(rollout -> toResponseRollout(rollout, false)).collect(Collectors.toList());
}

static MgmtRolloutResponseBody toResponseRollout(final Rollout rollout) {
static MgmtRolloutResponseBody toResponseRollout(final Rollout rollout, final boolean withDetails) {
final MgmtRolloutResponseBody body = new MgmtRolloutResponseBody();
body.setCreatedAt(rollout.getCreatedAt());
body.setCreatedBy(rollout.getCreatedBy());
Expand All @@ -78,9 +78,11 @@ static MgmtRolloutResponseBody toResponseRollout(final Rollout rollout) {
body.setStatus(rollout.getStatus().toString().toLowerCase());
body.setTotalTargets(rollout.getTotalTargets());

for (final TotalTargetCountStatus.Status status : TotalTargetCountStatus.Status.values()) {
body.getTotalTargetsPerStatus().put(status.name().toLowerCase(),
rollout.getTotalTargetCountStatus().getTotalTargetCountByStatus(status));
if (withDetails) {
for (final TotalTargetCountStatus.Status status : TotalTargetCountStatus.Status.values()) {
body.addTotalTargetsPerStatus(status.name().toLowerCase(),
rollout.getTotalTargetCountStatus().getTotalTargetCountByStatus(status));
}
}

body.add(linkTo(methodOn(MgmtRolloutRestApi.class).getRollout(rollout.getId())).withRel("self"));
Expand Down Expand Up @@ -144,10 +146,11 @@ static List<MgmtRolloutGroupResponseBody> toResponseRolloutGroup(final List<Roll
return Collections.emptyList();
}

return rollouts.stream().map(MgmtRolloutMapper::toResponseRolloutGroup).collect(Collectors.toList());
return rollouts.stream().map(group -> toResponseRolloutGroup(group, false)).collect(Collectors.toList());
}

static MgmtRolloutGroupResponseBody toResponseRolloutGroup(final RolloutGroup rolloutGroup) {
static MgmtRolloutGroupResponseBody toResponseRolloutGroup(final RolloutGroup rolloutGroup,
final boolean withDetailedStatus) {
final MgmtRolloutGroupResponseBody body = new MgmtRolloutGroupResponseBody();
body.setCreatedAt(rolloutGroup.getCreatedAt());
body.setCreatedBy(rolloutGroup.getCreatedBy());
Expand All @@ -171,9 +174,11 @@ static MgmtRolloutGroupResponseBody toResponseRolloutGroup(final RolloutGroup ro
body.setErrorAction(
new MgmtRolloutErrorAction(map(rolloutGroup.getErrorAction()), rolloutGroup.getErrorActionExp()));

for (final TotalTargetCountStatus.Status status : TotalTargetCountStatus.Status.values()) {
body.getTotalTargetsPerStatus().put(status.name().toLowerCase(),
rolloutGroup.getTotalTargetCountStatus().getTotalTargetCountByStatus(status));
if (withDetailedStatus) {
for (final TotalTargetCountStatus.Status status : TotalTargetCountStatus.Status.values()) {
body.addTotalTargetsPerStatus(status.name().toLowerCase(),
rolloutGroup.getTotalTargetCountStatus().getTotalTargetCountByStatus(status));
}
}

body.add(linkTo(methodOn(MgmtRolloutRestApi.class).getRolloutGroup(rolloutGroup.getRollout().getId(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public ResponseEntity<PagedList<MgmtRolloutResponseBody>> getRollouts(

final Page<Rollout> findModulesAll;
if (rsqlParam != null) {
findModulesAll = this.rolloutManagement.findAllWithDetailedStatusByPredicate(rsqlParam, pageable);
findModulesAll = this.rolloutManagement.findAllByPredicate(rsqlParam, pageable);
} else {
findModulesAll = this.rolloutManagement.findAll(pageable);
}
Expand All @@ -95,7 +95,7 @@ public ResponseEntity<PagedList<MgmtRolloutResponseBody>> getRollouts(
@Override
public ResponseEntity<MgmtRolloutResponseBody> getRollout(@PathVariable("rolloutId") final Long rolloutId) {
final Rollout findRolloutById = findRolloutOrThrowException(rolloutId);
return new ResponseEntity<>(MgmtRolloutMapper.toResponseRollout(findRolloutById), HttpStatus.OK);
return new ResponseEntity<>(MgmtRolloutMapper.toResponseRollout(findRolloutById, true), HttpStatus.OK);
}

@Override
Expand Down Expand Up @@ -126,27 +126,24 @@ public ResponseEntity<MgmtRolloutResponseBody> create(
throw new ConstraintViolationException("Either 'amountGroups' or 'groups' must be defined in the request");
}

return ResponseEntity.status(HttpStatus.CREATED).body(MgmtRolloutMapper.toResponseRollout(rollout));
return ResponseEntity.status(HttpStatus.CREATED).body(MgmtRolloutMapper.toResponseRollout(rollout, true));
}

@Override
public ResponseEntity<Void> start(@PathVariable("rolloutId") final Long rolloutId) {
final Rollout rollout = findRolloutOrThrowException(rolloutId);
this.rolloutManagement.startRollout(rollout);
this.rolloutManagement.startRollout(rolloutId);
return ResponseEntity.ok().build();
}

@Override
public ResponseEntity<Void> pause(@PathVariable("rolloutId") final Long rolloutId) {
final Rollout rollout = findRolloutOrThrowException(rolloutId);
this.rolloutManagement.pauseRollout(rollout);
this.rolloutManagement.pauseRollout(rolloutId);
return ResponseEntity.ok().build();
}

@Override
public ResponseEntity<Void> resume(@PathVariable("rolloutId") final Long rolloutId) {
final Rollout rollout = findRolloutOrThrowException(rolloutId);
this.rolloutManagement.resumeRollout(rollout);
this.rolloutManagement.resumeRollout(rolloutId);
return ResponseEntity.ok().build();
}

Expand All @@ -157,8 +154,6 @@ public ResponseEntity<PagedList<MgmtRolloutGroupResponseBody>> getRolloutGroups(
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam,
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam,
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_SEARCH, required = false) final String rsqlParam) {
final Rollout rollout = findRolloutOrThrowException(rolloutId);

final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam);
final int sanitizedLimitParam = PagingUtility.sanitizePageLimitParam(pagingLimitParam);
final Sort sorting = PagingUtility.sanitizeRolloutGroupSortParam(sortParam);
Expand All @@ -167,7 +162,7 @@ public ResponseEntity<PagedList<MgmtRolloutGroupResponseBody>> getRolloutGroups(

final Page<RolloutGroup> findRolloutGroupsAll;
if (rsqlParam != null) {
findRolloutGroupsAll = this.rolloutGroupManagement.findRolloutGroupsAll(rollout, rsqlParam, pageable);
findRolloutGroupsAll = this.rolloutGroupManagement.findRolloutGroupsAll(rolloutId, rsqlParam, pageable);
} else {
findRolloutGroupsAll = this.rolloutGroupManagement.findRolloutGroupsByRolloutId(rolloutId, pageable);
}
Expand All @@ -182,7 +177,7 @@ public ResponseEntity<MgmtRolloutGroupResponseBody> getRolloutGroup(@PathVariabl
@PathVariable("groupId") final Long groupId) {
findRolloutOrThrowException(rolloutId);
final RolloutGroup rolloutGroup = findRolloutGroupOrThrowException(groupId);
return ResponseEntity.ok(MgmtRolloutMapper.toResponseRolloutGroup(rolloutGroup));
return ResponseEntity.ok(MgmtRolloutMapper.toResponseRolloutGroup(rolloutGroup, true));
}

@Override
Expand Down Expand Up @@ -223,7 +218,8 @@ private Rollout findRolloutOrThrowException(final Long rolloutId) {
}

private RolloutGroup findRolloutGroupOrThrowException(final Long rolloutGroupId) {
final RolloutGroup rolloutGroup = this.rolloutGroupManagement.findRolloutGroupById(rolloutGroupId);
final RolloutGroup rolloutGroup = this.rolloutGroupManagement
.findRolloutGroupWithDetailedStatus(rolloutGroupId);
if (rolloutGroup == null) {
throw new EntityNotFoundException("Group with Id {" + rolloutGroupId + DOES_NOT_EXIST);
}
Expand Down
Loading

0 comments on commit a571656

Please sign in to comment.