diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/MgmtNamedEntity.java b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/MgmtNamedEntity.java index 7579db72c..3a2478c25 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/MgmtNamedEntity.java +++ b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/MgmtNamedEntity.java @@ -25,8 +25,8 @@ import lombok.experimental.Accessors; @ToString(callSuper = true) public abstract class MgmtNamedEntity extends MgmtBaseEntity { - @JsonProperty(required = true) @Schema(example = "Name of entity") + @JsonProperty(required = true) private String name; @Schema(example = "Description of entity") diff --git a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/rollout/MgmtRolloutRestRequestBodyPost.java b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/rollout/MgmtRolloutRestRequestBodyPost.java index c72bb73b5..984d717a5 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/rollout/MgmtRolloutRestRequestBodyPost.java +++ b/hawkbit-mgmt/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/rollout/MgmtRolloutRestRequestBodyPost.java @@ -14,6 +14,7 @@ import java.util.List; 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 io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -64,12 +65,14 @@ import org.eclipse.hawkbit.mgmt.json.model.rolloutgroup.MgmtRolloutGroup; public class MgmtRolloutRestRequestBodyPost extends AbstractMgmtRolloutConditionsEntity { @Schema(description = "Target filter query language expression", example = "id==targets-*") + @JsonProperty(required = true) private String targetFilterQuery; @Schema(description = "The ID of distribution set of this rollout", example = "6") + @JsonProperty(required = true) private long distributionSetId; - @Schema(description = "The amount of groups the rollout should split targets into", example = "5") + @Schema(description = "The amount of groups the rollout should split targets into", example = "5", defaultValue = "1") private Integer amountGroups; @Schema(description = "Force time in milliseconds", example = "1691065781929") diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResource.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResource.java index a3422646b..46ebbf463 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResource.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtRolloutResource.java @@ -129,7 +129,7 @@ public class MgmtRolloutResource implements MgmtRolloutRestApi { throw new ValidationException("Dynamic rollouts are not supported with groups"); } if (rolloutRequestBody.getAmountGroups() != null) { - throw new ValidationException("Either 'amountGroups' or 'groups' must be defined in the request"); + throw new ValidationException("If 'group' is set the 'amountGroups' must not be set in the request"); } final List rolloutGroups = rolloutRequestBody.getGroups().stream() .map(mgmtRolloutGroup -> MgmtRolloutMapper.fromRequest( @@ -137,14 +137,13 @@ public class MgmtRolloutResource implements MgmtRolloutRestApi { isConfirmationRequiredForGroup(mgmtRolloutGroup, rolloutRequestBody).orElse(confirmationFlowActive))) .toList(); rollout = rolloutManagement.create(create, rolloutGroups, rolloutGroupConditions); - } else if (rolloutRequestBody.getAmountGroups() != null) { + } else { + final int amountGroup = Optional.ofNullable(rolloutRequestBody.getAmountGroups()).orElse(1); final boolean confirmationRequired = rolloutRequestBody.getConfirmationRequired() == null ? confirmationFlowActive : rolloutRequestBody.getConfirmationRequired(); - rollout = rolloutManagement.create(create, rolloutRequestBody.getAmountGroups(), confirmationRequired, + rollout = rolloutManagement.create(create, amountGroup, confirmationRequired, rolloutGroupConditions, MgmtRolloutMapper.fromRequest(rolloutRequestBody.getDynamicGroupTemplate())); - } else { - throw new ValidationException("Either 'amountGroups' or 'groups' must be defined in the request"); } return ResponseEntity.status(HttpStatus.CREATED).body(MgmtRolloutMapper.toResponseRollout(rollout, true)); diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/RolloutManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/RolloutManagement.java index 02968654a..d0db902fd 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/RolloutManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/RolloutManagement.java @@ -74,8 +74,7 @@ public interface RolloutManagement extends PermissionSupport { long count(); /** - * Counts all {@link Rollout}s for a specific {@link DistributionSet} that - * are stoppable + * Counts all {@link Rollout}s for a specific {@link DistributionSet} that are stoppable *

* No access control applied *