From 94d38a087c8ae445d229410a148ba301c77cf3bd Mon Sep 17 00:00:00 2001
From: Takuya ASADA <syuu@scylladb.com>
Date: Thu, 5 Dec 2024 23:12:51 +0900
Subject: [PATCH] aws: add i7ie instance type

Adding preset io parameters of i7ie to scylla_cloud_io_setup,
and also added i7ie to supported instance type on aws_instance class.

Closes #559
---
 common/scylla_cloud_io_setup | 15 +++++++++++++++
 lib/scylla_cloud.py          |  4 ++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/common/scylla_cloud_io_setup b/common/scylla_cloud_io_setup
index 5cd51a666..ca9ad6dfa 100755
--- a/common/scylla_cloud_io_setup
+++ b/common/scylla_cloud_io_setup
@@ -423,6 +423,21 @@ class aws_io_setup(cloud_io_setup):
             self.disk_properties["read_bandwidth"] = 3088599296 * nr_disks
             self.disk_properties["write_iops"] = 239549 * nr_disks
             self.disk_properties["write_bandwidth"] = 2302438912 * nr_disks
+        elif self.idata.instancetype == "i7ie.large":
+            self.disk_properties["read_iops"] = 58449
+            self.disk_properties["read_bandwidth"] = 574854656
+            self.disk_properties["write_iops"] = 47145
+            self.disk_properties["write_bandwidth"] = 253132917
+        elif self.idata.instancetype in ("i7ie.xlarge", "i7ie.2xlarge"):
+            self.disk_properties["read_iops"] = 117257 * nr_disks
+            self.disk_properties["read_bandwidth"] = 1148572714 * nr_disks
+            self.disk_properties["write_iops"] = 94180 * nr_disks
+            self.disk_properties["write_bandwidth"] = 505684885 * nr_disks
+        elif self.idata.instancetype in ("i7ie.3xlarge", "i7ie.6xlarge", "i7ie.12xlarge", "i7ie.18xlarge", "i7ie.24xlarge", "i7ie.48xlarge"):
+            self.disk_properties["read_iops"] = 352834 * nr_disks
+            self.disk_properties["read_bandwidth"] = 3422623232 * nr_disks
+            self.disk_properties["write_iops"] = 119327 * nr_disks
+            self.disk_properties["write_bandwidth"] = 1526442410 * nr_disks
 
         if "read_iops" in self.disk_properties:
             self.save()
diff --git a/lib/scylla_cloud.py b/lib/scylla_cloud.py
index 4861ff7e4..cdbc768e7 100644
--- a/lib/scylla_cloud.py
+++ b/lib/scylla_cloud.py
@@ -812,7 +812,7 @@ def instance_class(self):
         return self._type.split(".")[0]
 
     def is_supported_instance_class(self):
-        if self.instance_class() in ['i2', 'i3', 'i3en', 'c5d', 'm5d', 'm5ad', 'r5d', 'z1d', 'c6gd', 'm6gd', 'r6gd', 'x2gd', 'im4gn', 'is4gen', 'i4i', 'i4g']:
+        if self.instance_class() in ['i2', 'i3', 'i3en', 'c5d', 'm5d', 'm5ad', 'r5d', 'z1d', 'c6gd', 'm6gd', 'r6gd', 'x2gd', 'im4gn', 'is4gen', 'i4i', 'i4g', 'i7ie']:
             return True
         return False
 
@@ -826,7 +826,7 @@ def get_en_interface_type(self):
         instance_size = self.instance_size()
         if instance_class in ['c3', 'c4', 'd2', 'i2', 'r3']:
             return 'ixgbevf'
-        if instance_class in ['a1', 'c5', 'c5a', 'c5d', 'c5n', 'c6g', 'c6gd', 'f1', 'g3', 'g4', 'h1', 'i3', 'i3en', 'inf1', 'm5', 'm5a', 'm5ad', 'm5d', 'm5dn', 'm5n', 'm6g', 'm6gd', 'p2', 'p3', 'r4', 'r5', 'r5a', 'r5ad', 'r5b', 'r5d', 'r5dn', 'r5n', 't3', 't3a', 'u-6tb1', 'u-9tb1', 'u-12tb1', 'u-18tn1', 'u-24tb1', 'x1', 'x1e', 'z1d', 'c6g', 'c6gd', 'm6g', 'm6gd', 't4g', 'r6g', 'r6gd', 'x2gd', 'im4gn', 'is4gen', 'i4i', 'i4g']:
+        if instance_class in ['a1', 'c5', 'c5a', 'c5d', 'c5n', 'c6g', 'c6gd', 'f1', 'g3', 'g4', 'h1', 'i3', 'i3en', 'inf1', 'm5', 'm5a', 'm5ad', 'm5d', 'm5dn', 'm5n', 'm6g', 'm6gd', 'p2', 'p3', 'r4', 'r5', 'r5a', 'r5ad', 'r5b', 'r5d', 'r5dn', 'r5n', 't3', 't3a', 'u-6tb1', 'u-9tb1', 'u-12tb1', 'u-18tn1', 'u-24tb1', 'x1', 'x1e', 'z1d', 'c6g', 'c6gd', 'm6g', 'm6gd', 't4g', 'r6g', 'r6gd', 'x2gd', 'im4gn', 'is4gen', 'i4i', 'i4g', 'i7ie']:
             return 'ena'
         if instance_class == 'm4':
             if instance_size == '16xlarge':