Skip to content

Commit d152688

Browse files
committed
[Test] In test_pcluster_configure, assert that head node and compute instance types are taken from the current free tier.
1 parent fa24de9 commit d152688

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

tests/integration-tests/tests/configure/test_pcluster_configure.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied.
1111
# See the License for the specific language governing permissions and limitations under the License.
1212
import logging
13+
import re
1314
from datetime import datetime
1415
from os import environ
1516

@@ -21,14 +22,24 @@
2122
from cfn_stacks_factory import CfnVpcStack
2223
from conftest import inject_additional_config_settings
2324
from conftest_networking import CIDR_FOR_CUSTOM_SUBNETS
24-
from utils import get_instance_info
25+
from utils import get_instance_info, get_free_tier_instance_types
26+
27+
# REGEX_FREE_TIER_INSTANCE_TYPES = '|'.join(map(re.escape, get_free_tier_instance_types()))
28+
REGEX_FREE_TIER_INSTANCE_TYPES = '|'.join(map(re.escape, [
29+
"c7i-flex.large",
30+
"t4g.small",
31+
"t4g.micro",
32+
"t3.micro",
33+
"t3.small",
34+
"m7i-flex.large"
35+
]))
2536

2637
PROMPTS = {
2738
"region": lambda region: {"prompt": r"AWS Region ID \[.*\]: ", "response": region},
2839
"key_pair": lambda key_name: {"prompt": r"EC2 Key Pair Name \[.*\]: ", "response": key_name},
2940
"scheduler": lambda scheduler: {"prompt": r"Scheduler \[slurm\]: ", "response": scheduler},
3041
"os": lambda os: {"prompt": r"Operating System \[alinux2\]: ", "response": os, "skip_for_batch": True},
31-
"head_instance_type": lambda instance: {"prompt": r"Head node instance type \[t.\.micro\]: ", "response": instance},
42+
"head_instance_type": lambda instance: {"prompt": rf"Head node instance type \[({REGEX_FREE_TIER_INSTANCE_TYPES})\]: ", "response": instance},
3243
"no_of_queues": lambda n: {"prompt": rf"Number of queues \[{n}\]: ", "response": f"{n}", "skip_for_batch": True},
3344
"queue_name": lambda queue, name: {"prompt": rf"Name of queue {queue} \[queue{queue}\]: ", "response": name},
3445
"no_of_compute_resources": lambda queue_name, queue, n: {
@@ -37,7 +48,7 @@
3748
"skip_for_batch": True,
3849
},
3950
"compute_instance_type": lambda resource, queue_name, instance: {
40-
"prompt": rf"Compute instance type for compute resource {resource} in {queue_name} \[t.\.micro\]: ",
51+
"prompt": rf"Compute instance type for compute resource {resource} in {queue_name} \[({REGEX_FREE_TIER_INSTANCE_TYPES})\]: ",
4152
"response": instance,
4253
"skip_for_batch": True,
4354
},

tests/integration-tests/utils.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -908,3 +908,14 @@ def find_stack_by_tag(tag, region, stack_prefix):
908908
logging.info(f"Found stack: {name} (created on {creation_date})")
909909
return name
910910
return None
911+
912+
913+
def get_free_tier_instance_types(region: str = None):
914+
ec2 = boto3.client('ec2', region_name=region)
915+
response = ec2.describe_instance_types(
916+
Filters=[
917+
{'Name': 'free-tier-eligible', 'Values': ['true']},
918+
{"Name": "current-generation", "Values": ["true"]},
919+
]
920+
)
921+
return [instance['InstanceType'] for instance in response['InstanceTypes']]

0 commit comments

Comments
 (0)