8186: Round up ec2 ebs volume sizes. Ensure size is in valid range. Add test for...
[arvados.git] / services / nodemanager / arvnodeman / computenode / driver / ec2.py
index 6a9f473245084b73aa598cf15dec1a6ad8a6f48c..9670c9c62b5f9ec3ab46b754a7b0cb32ab70cc74 100644 (file)
@@ -70,12 +70,18 @@ class ComputeNodeDriver(BaseComputeNodeDriver):
         kw = {'name': self.create_cloud_name(arvados_node),
                 'ex_userdata': self._make_ping_url(arvados_node)}
         # libcloud/ec2 disk sizes are in GB, Arvados/SLURM "scratch" value is in MB
-        scratch = size.scratch / 1000
+        scratch = int(size.scratch / 1000) + 1
         if scratch > size.disk:
+            volsize = scratch - size.disk
+            if volsize < 1:
+                volsize = 1
+            if volsize > 16384:
+                volsize = 16384
             kw["ex_blockdevicemappings"] = [{
+                "DeviceName": "/dev/xvdt",
                 "Ebs": {
                     "DeleteOnTermination": True,
-                    "VolumeSize": scratch - size.disk,
+                    "VolumeSize": volsize,
                     "VolumeType": "gp2"
                 }}]
         return kw