Repository: cloudtools/troposphere (python)

Issue:
RDS Validiation: minimum allocated storage for Provisioned IOPS for SQLServer is 20GiB, not 100GiB
Troposphere validates the minimum allocated storage required for provisioned iops at 100
https://github.com/cloudtools/troposphere/blob/main/troposphere/validators/rds.py#L345

For SQLServer, the minimum is 20
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html#USER_PIOPS

Pull request description:
Allow RDS storage for sqlserver to have a minimum of 20GB
Fixes #2075 

Patch:
diff --git a/troposphere/validators/rds.py b/troposphere/validators/rds.py
index a7209308..3640e297 100644
--- a/troposphere/validators/rds.py
+++ b/troposphere/validators/rds.py
@@ -340,12 +340,18 @@ def validate_dbinstance(self) -> None:
     allocated_storage = self.properties.get("AllocatedStorage")
     iops = self.properties.get("Iops", None)
     if iops and not isinstance(iops, AWSHelperFn):
+        min_storage_size = 100
+        engine = self.properties.get("Engine")
+        if not isinstance(engine, AWSHelperFn) and engine.startswith("sqlserver"):
+            min_storage_size = 20
+
         if (
             not isinstance(allocated_storage, AWSHelperFn)
-            and int(allocated_storage) < 100
+            and int(allocated_storage) < min_storage_size
         ):
             raise ValueError(
-                "AllocatedStorage must be at least 100 when " "Iops is set."
+                f"AllocatedStorage must be at least {min_storage_size} when "
+                "Iops is set."
             )
         if (
             not isinstance(allocated_storage, AWSHelperFn)


Test patch:
diff --git a/tests/test_rds.py b/tests/test_rds.py
index 9732c784..f00e7f66 100644
--- a/tests/test_rds.py
+++ b/tests/test_rds.py
@@ -205,6 +205,23 @@ class TestRDS(unittest.TestCase):
         i.Iops = 5000
         i.to_dict()
 
+    def test_storage_sqlserver(self):
+        i = rds.DBInstance(
+            "NoAZAndMultiAZ",
+            MasterUsername="myuser",
+            MasterUserPassword="mypassword",
+            DBInstanceClass="db.m1.small",
+            Engine="sqlserver-ee",
+            StorageType="io1",
+            Iops=1000,
+            AllocatedStorage=10,
+        )
+        with self.assertRaisesRegex(ValueError, " must be at least 20 "):
+            i.to_dict()
+
+        i.AllocatedStorage = 20
+        i.to_dict()
+
     def test_snapshot(self):
         i = rds.DBInstance(
             "MyDB",