Fix retrieve Rollout with details (#2435)
* Fix retrieve Rollout with details * Rename RolloutManagement method for retrieve Rollout slice with details. Slight refactoring in MgmtRolloutMapper --------- Co-authored-by: vasilchev <vasil.ilchev@bosch.com>
This commit is contained in:
@@ -62,7 +62,11 @@ final class MgmtRolloutMapper {
|
|||||||
return toResponseRollout(rollouts, false);
|
return toResponseRollout(rollouts, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static List<MgmtRolloutResponseBody> toResponseRollout(final List<Rollout> rollouts, final boolean withDetails) {
|
static List<MgmtRolloutResponseBody> toResponseRolloutWithDetails(final List<Rollout> rollouts) {
|
||||||
|
return toResponseRollout(rollouts, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<MgmtRolloutResponseBody> toResponseRollout(final List<Rollout> rollouts, final boolean withDetails) {
|
||||||
if (rollouts == null) {
|
if (rollouts == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,19 +94,20 @@ public class MgmtRolloutResource implements MgmtRolloutRestApi {
|
|||||||
final Pageable pageable = new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting);
|
final Pageable pageable = new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting);
|
||||||
final Page<Rollout> rollouts;
|
final Page<Rollout> rollouts;
|
||||||
if (rsqlParam != null) {
|
if (rsqlParam != null) {
|
||||||
rollouts = this.rolloutManagement.findByRsql(pageable, rsqlParam, false);
|
rollouts = rolloutManagement.findByRsql(pageable, rsqlParam, false);
|
||||||
} else {
|
} else {
|
||||||
rollouts = this.rolloutManagement.findAll(pageable, false);
|
rollouts = rolloutManagement.findAll(pageable, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
final long totalElements = rollouts.getTotalElements();
|
final long totalElements = rollouts.getTotalElements();
|
||||||
|
|
||||||
|
final List<MgmtRolloutResponseBody> rest;
|
||||||
if (isFullMode) {
|
if (isFullMode) {
|
||||||
this.rolloutManagement.setRolloutStatusDetails(rollouts);
|
rest = MgmtRolloutMapper.toResponseRolloutWithDetails(rolloutManagement.getRolloutWithStatusDetails(rollouts).getContent());
|
||||||
|
} else {
|
||||||
|
rest = MgmtRolloutMapper.toResponseRollout(rollouts.getContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<MgmtRolloutResponseBody> rest = MgmtRolloutMapper.toResponseRollout(rollouts.getContent(), isFullMode);
|
|
||||||
|
|
||||||
return ResponseEntity.ok(new PagedList<>(rest, totalElements));
|
return ResponseEntity.ok(new PagedList<>(rest, totalElements));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -412,6 +412,6 @@ public interface RolloutManagement {
|
|||||||
*
|
*
|
||||||
* @param rollouts the rollouts to be enriched.
|
* @param rollouts the rollouts to be enriched.
|
||||||
*/
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_ROLLOUT_MANAGEMENT_UPDATE)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_ROLLOUT_MANAGEMENT_READ)
|
||||||
void setRolloutStatusDetails(final Slice<Rollout> rollouts);
|
Slice<Rollout> getRolloutWithStatusDetails(final Slice<Rollout> rollouts);
|
||||||
}
|
}
|
||||||
@@ -277,8 +277,7 @@ public class JpaRolloutManagement implements RolloutManagement {
|
|||||||
final Slice<Rollout> rollouts = JpaManagementHelper.convertPage(
|
final Slice<Rollout> rollouts = JpaManagementHelper.convertPage(
|
||||||
rolloutRepository.findAll(RolloutSpecification.isDeleted(deleted, pageable.getSort()), JpaRollout_.GRAPH_ROLLOUT_DS, pageable),
|
rolloutRepository.findAll(RolloutSpecification.isDeleted(deleted, pageable.getSort()), JpaRollout_.GRAPH_ROLLOUT_DS, pageable),
|
||||||
pageable);
|
pageable);
|
||||||
setRolloutStatusDetails(rollouts);
|
return getRolloutWithStatusDetails(rollouts);
|
||||||
return rollouts;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -295,8 +294,7 @@ public class JpaRolloutManagement implements RolloutManagement {
|
|||||||
final boolean deleted) {
|
final boolean deleted) {
|
||||||
final Slice<Rollout> findAll = JpaManagementHelper.findAllWithoutCountBySpec(rolloutRepository, pageable,
|
final Slice<Rollout> findAll = JpaManagementHelper.findAllWithoutCountBySpec(rolloutRepository, pageable,
|
||||||
Collections.singletonList(RolloutSpecification.likeName(searchText, deleted)));
|
Collections.singletonList(RolloutSpecification.likeName(searchText, deleted)));
|
||||||
setRolloutStatusDetails(findAll);
|
return getRolloutWithStatusDetails(findAll);
|
||||||
return findAll;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -499,7 +497,7 @@ public class JpaRolloutManagement implements RolloutManagement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setRolloutStatusDetails(final Slice<Rollout> rollouts) {
|
public Slice<Rollout> getRolloutWithStatusDetails(final Slice<Rollout> rollouts) {
|
||||||
final List<Long> rolloutIds = rollouts.getContent().stream().map(Rollout::getId).toList();
|
final List<Long> rolloutIds = rollouts.getContent().stream().map(Rollout::getId).toList();
|
||||||
final Map<Long, List<TotalTargetCountActionStatus>> allStatesForRollout = getStatusCountItemForRollout(rolloutIds);
|
final Map<Long, List<TotalTargetCountActionStatus>> allStatesForRollout = getStatusCountItemForRollout(rolloutIds);
|
||||||
|
|
||||||
@@ -510,6 +508,7 @@ public class JpaRolloutManagement implements RolloutManagement {
|
|||||||
((JpaRollout) rollout).setTotalTargetCountStatus(totalTargetCountStatus);
|
((JpaRollout) rollout).setTotalTargetCountStatus(totalTargetCountStatus);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
return rollouts;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -22,11 +22,9 @@ import org.eclipse.hawkbit.repository.builder.DistributionSetCreate;
|
|||||||
import org.eclipse.hawkbit.repository.builder.DistributionSetTypeCreate;
|
import org.eclipse.hawkbit.repository.builder.DistributionSetTypeCreate;
|
||||||
import org.eclipse.hawkbit.repository.builder.DynamicRolloutGroupTemplate;
|
import org.eclipse.hawkbit.repository.builder.DynamicRolloutGroupTemplate;
|
||||||
import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest;
|
import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest;
|
||||||
import org.eclipse.hawkbit.repository.jpa.model.JpaRollout;
|
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
import org.eclipse.hawkbit.repository.model.Rollout;
|
import org.eclipse.hawkbit.repository.model.Rollout;
|
||||||
import org.eclipse.hawkbit.repository.model.RolloutGroupConditionBuilder;
|
import org.eclipse.hawkbit.repository.model.RolloutGroupConditionBuilder;
|
||||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
|
||||||
import org.eclipse.hawkbit.repository.test.util.WithUser;
|
import org.eclipse.hawkbit.repository.test.util.WithUser;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.data.domain.PageImpl;
|
import org.springframework.data.domain.PageImpl;
|
||||||
@@ -159,7 +157,7 @@ class RolloutManagementSecurityTest extends AbstractJpaIntegrationTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Tests ManagementAPI PreAuthorized method with correct and insufficient permissions.")
|
@Description("Tests ManagementAPI PreAuthorized method with correct and insufficient permissions.")
|
||||||
void setRolloutStatusDetailsPermissionsCheck() {
|
void getRolloutWithStatusDetailsPermissionsCheck() {
|
||||||
final String rolloutName = "rollout-std";
|
final String rolloutName = "rollout-std";
|
||||||
final int amountGroups = 5; // static only
|
final int amountGroups = 5; // static only
|
||||||
final String targetPrefix = "controller-rollout-std-";
|
final String targetPrefix = "controller-rollout-std-";
|
||||||
@@ -169,9 +167,9 @@ class RolloutManagementSecurityTest extends AbstractJpaIntegrationTest {
|
|||||||
final Rollout rollout = testdataFactory.createRolloutByVariables(rolloutName, rolloutName, amountGroups,
|
final Rollout rollout = testdataFactory.createRolloutByVariables(rolloutName, rolloutName, amountGroups,
|
||||||
"controllerid==" + targetPrefix + "*", distributionSet, "60", "30", false, false);
|
"controllerid==" + targetPrefix + "*", distributionSet, "60", "30", false, false);
|
||||||
assertPermissions(() -> {
|
assertPermissions(() -> {
|
||||||
rolloutManagement.setRolloutStatusDetails(new PageImpl<>(List.of(rollout)));
|
rolloutManagement.getRolloutWithStatusDetails(new PageImpl<>(List.of(rollout)));
|
||||||
return null;
|
return null;
|
||||||
}, List.of(SpPermission.UPDATE_ROLLOUT, SpPermission.READ_REPOSITORY));
|
}, List.of(SpPermission.READ_ROLLOUT, SpPermission.READ_REPOSITORY));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user