diff --git a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidator.java b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidator.java index fe39cb0a..d673f01a 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidator.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidator.java @@ -1,7 +1,5 @@ package net.hostsharing.hsadminng.hs.booking.item.validators; - - import static net.hostsharing.hsadminng.hs.validation.BooleanProperty.booleanProperty; import static net.hostsharing.hsadminng.hs.validation.EnumerationProperty.enumerationProperty; import static net.hostsharing.hsadminng.hs.validation.IntegerProperty.integerProperty; @@ -15,12 +13,16 @@ class HsCloudServerBookingItemValidator extends HsBookingItemEntityValidator { integerProperty("CPUs") .min( 1) .max( 32) .required(), integerProperty("RAM").unit("GB") .min( 1) .max( 128) .required(), - integerProperty("SSD").unit("GB") .min( 25) .max( 1000) .step(25).required(), + integerProperty("SSD").unit("GB") .min( 0) .max( 1000) .step(25).required(), // (1) integerProperty("HDD").unit("GB") .min( 0) .max( 4000) .step(250).withDefault(0), integerProperty("Traffic").unit("GB") .min(250) .max(10000) .step(250).required(), enumerationProperty("SLA-Infrastructure").values("BASIC", "EXT8H", "EXT4H", "EXT2H").optional() // @formatter:on ); + + // (q) We do have pre-existing CloudServers without SSD, just HDD, thus SSD starts with min=0. + // TODO.impl: Validation that SSD+HDD is at minimum 25 GB is missing. + // e.g. validationGroup("SSD", "HDD").min(0); } } diff --git a/src/main/java/net/hostsharing/hsadminng/hs/validation/EnumerationProperty.java b/src/main/java/net/hostsharing/hsadminng/hs/validation/EnumerationProperty.java index adf2f6d8..923d7ae1 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/validation/EnumerationProperty.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/validation/EnumerationProperty.java @@ -35,7 +35,7 @@ public class EnumerationProperty extends ValidatableProperty { public void deferredInit(final ValidatableProperty[] allProperties) { if (deferredInit != null) { if (this.values != null) { - throw new IllegalStateException("property " + toString() + " already values"); + throw new IllegalStateException("property " + toString() + " already has values"); } this.values = deferredInit.apply(allProperties); } diff --git a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidatorUnitTest.java b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidatorUnitTest.java index 6f854554..9258a4a1 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidatorUnitTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/booking/item/validators/HsCloudServerBookingItemValidatorUnitTest.java @@ -58,7 +58,7 @@ class HsCloudServerBookingItemValidatorUnitTest { "{type=boolean, propertyName=active, required=false, defaultValue=true, isTotalsValidator=false}", "{type=integer, propertyName=CPUs, min=1, max=32, required=true, isTotalsValidator=false}", "{type=integer, propertyName=RAM, unit=GB, min=1, max=128, required=true, isTotalsValidator=false}", - "{type=integer, propertyName=SSD, unit=GB, min=25, max=1000, step=25, required=true, isTotalsValidator=false}", + "{type=integer, propertyName=SSD, unit=GB, min=0, max=1000, step=25, required=true, isTotalsValidator=false}", "{type=integer, propertyName=HDD, unit=GB, min=0, max=4000, step=250, required=false, defaultValue=0, isTotalsValidator=false}", "{type=integer, propertyName=Traffic, unit=GB, min=250, max=10000, step=250, required=true, isTotalsValidator=false}", "{type=enumeration, propertyName=SLA-Infrastructure, values=[BASIC, EXT8H, EXT4H, EXT2H], required=false, isTotalsValidator=false}");