+ amountGroups made optional with default value 1 group Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
@@ -25,8 +25,8 @@ import lombok.experimental.Accessors;
|
|||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
public abstract class MgmtNamedEntity extends MgmtBaseEntity {
|
public abstract class MgmtNamedEntity extends MgmtBaseEntity {
|
||||||
|
|
||||||
@JsonProperty(required = true)
|
|
||||||
@Schema(example = "Name of entity")
|
@Schema(example = "Name of entity")
|
||||||
|
@JsonProperty(required = true)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@Schema(example = "Description of entity")
|
@Schema(example = "Description of entity")
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import java.util.List;
|
|||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@@ -64,12 +65,14 @@ import org.eclipse.hawkbit.mgmt.json.model.rolloutgroup.MgmtRolloutGroup;
|
|||||||
public class MgmtRolloutRestRequestBodyPost extends AbstractMgmtRolloutConditionsEntity {
|
public class MgmtRolloutRestRequestBodyPost extends AbstractMgmtRolloutConditionsEntity {
|
||||||
|
|
||||||
@Schema(description = "Target filter query language expression", example = "id==targets-*")
|
@Schema(description = "Target filter query language expression", example = "id==targets-*")
|
||||||
|
@JsonProperty(required = true)
|
||||||
private String targetFilterQuery;
|
private String targetFilterQuery;
|
||||||
|
|
||||||
@Schema(description = "The ID of distribution set of this rollout", example = "6")
|
@Schema(description = "The ID of distribution set of this rollout", example = "6")
|
||||||
|
@JsonProperty(required = true)
|
||||||
private long distributionSetId;
|
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;
|
private Integer amountGroups;
|
||||||
|
|
||||||
@Schema(description = "Force time in milliseconds", example = "1691065781929")
|
@Schema(description = "Force time in milliseconds", example = "1691065781929")
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ public class MgmtRolloutResource implements MgmtRolloutRestApi {
|
|||||||
throw new ValidationException("Dynamic rollouts are not supported with groups");
|
throw new ValidationException("Dynamic rollouts are not supported with groups");
|
||||||
}
|
}
|
||||||
if (rolloutRequestBody.getAmountGroups() != null) {
|
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<GroupCreate> rolloutGroups = rolloutRequestBody.getGroups().stream()
|
final List<GroupCreate> rolloutGroups = rolloutRequestBody.getGroups().stream()
|
||||||
.map(mgmtRolloutGroup -> MgmtRolloutMapper.fromRequest(
|
.map(mgmtRolloutGroup -> MgmtRolloutMapper.fromRequest(
|
||||||
@@ -137,14 +137,13 @@ public class MgmtRolloutResource implements MgmtRolloutRestApi {
|
|||||||
isConfirmationRequiredForGroup(mgmtRolloutGroup, rolloutRequestBody).orElse(confirmationFlowActive)))
|
isConfirmationRequiredForGroup(mgmtRolloutGroup, rolloutRequestBody).orElse(confirmationFlowActive)))
|
||||||
.toList();
|
.toList();
|
||||||
rollout = rolloutManagement.create(create, rolloutGroups, rolloutGroupConditions);
|
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
|
final boolean confirmationRequired = rolloutRequestBody.getConfirmationRequired() == null
|
||||||
? confirmationFlowActive
|
? confirmationFlowActive
|
||||||
: rolloutRequestBody.getConfirmationRequired();
|
: rolloutRequestBody.getConfirmationRequired();
|
||||||
rollout = rolloutManagement.create(create, rolloutRequestBody.getAmountGroups(), confirmationRequired,
|
rollout = rolloutManagement.create(create, amountGroup, confirmationRequired,
|
||||||
rolloutGroupConditions, MgmtRolloutMapper.fromRequest(rolloutRequestBody.getDynamicGroupTemplate()));
|
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));
|
return ResponseEntity.status(HttpStatus.CREATED).body(MgmtRolloutMapper.toResponseRollout(rollout, true));
|
||||||
|
|||||||
@@ -74,8 +74,7 @@ public interface RolloutManagement extends PermissionSupport {
|
|||||||
long count();
|
long count();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Counts all {@link Rollout}s for a specific {@link DistributionSet} that
|
* Counts all {@link Rollout}s for a specific {@link DistributionSet} that are stoppable
|
||||||
* are stoppable
|
|
||||||
* <p/>
|
* <p/>
|
||||||
* No access control applied
|
* No access control applied
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user