Skip to content

Commit 0cee422

Browse files
[integ-tests framework] Honor --ami-owner option when retrieving AMIs in integration tests
The --ami-owner option was ignored by `retrieve_latest_ami`, so tests always searched the default per-OS owners (amazon/self). This prevented running `retrieve_latest_ami` against ParallelCluster AMIs built in a separate account.
1 parent a3b8e20 commit 0cee422

5 files changed

Lines changed: 19 additions & 6 deletions

File tree

tests/integration-tests/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,7 @@ def inject_additional_config_settings( # noqa C901
903903
ami_type="pcluster",
904904
architecture=architecture,
905905
additional_filters=_build_private_os_ami_filters(request),
906+
request=request,
906907
),
907908
("Image", "CustomAmi"),
908909
)

tests/integration-tests/tests/common/utils.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,17 +167,24 @@ def retrieve_latest_ami(
167167
and not request.config.getoption("pcluster_git_ref")
168168
and not request.config.getoption("cookbook_git_ref")
169169
and not request.config.getoption("node_git_ref")
170+
and not request.config.getoption("ami_owner")
170171
and not allow_private_ami
171172
and os not in PRIVATE_OSES
172173
): # If none of Git refs is provided, the test is running against released version.
173174
# Then retrieve public pcluster AMIs
174175
additional_filters.append({"Name": "is-public", "Values": ["true"]})
175176
else:
176177
ami_name = _get_ami_for_os(ami_type, os, architecture).get("name")
178+
if request and request.config.getoption("ami_owner") and ami_type == "pcluster":
179+
owners = [
180+
request.config.getoption("ami_owner")
181+
] # ami owner should take effect only when getting pcluster AMI
182+
else:
183+
owners = _get_ami_for_os(ami_type, os, architecture).get("owners")
177184
describe_images_args = {
178185
"Filters": [{"Name": "name", "Values": [ami_name]}, {"Name": "architecture", "Values": [architecture]}]
179186
+ additional_filters,
180-
"Owners": _get_ami_for_os(ami_type, os, architecture).get("owners"),
187+
"Owners": owners,
181188
"IncludeDeprecated": _get_ami_for_os(ami_type, os, architecture).get("includeDeprecated", False),
182189
}
183190
logging.info("Retrieving AMI with DescribeImages arguments: %s" % describe_images_args)

tests/integration-tests/tests/createami/test_createami.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ def test_build_image_custom_components(
576576
bucket.upload_file(str(test_datadir / custom_script_file), "scripts/custom_script.sh")
577577

578578
# Get ParallelCluster AMI as base AMI
579-
base_ami = retrieve_latest_ami(region, os, ami_type="pcluster", architecture=architecture)
579+
base_ami = retrieve_latest_ami(region, os, ami_type="pcluster", architecture=architecture, request=request)
580580

581581
image_id = generate_stack_name(
582582
"integ-tests-build-image-custom-components", request.config.getoption("stackname_suffix")

tests/integration-tests/tests/iam/test_iam_image.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,13 @@ def test_iam_roles(
2929
pcluster_config_reader,
3030
images_factory,
3131
test_datadir,
32+
request,
3233
):
3334
instance_profile, lambda_cleanup_role = _create_image_roles(create_roles_stack)
3435

35-
image = _build_image(images_factory, instance_profile, lambda_cleanup_role, os, pcluster_config_reader, region)
36+
image = _build_image(
37+
images_factory, instance_profile, lambda_cleanup_role, os, pcluster_config_reader, region, request
38+
)
3639

3740
cfn_client = boto3.client("cloudformation", region_name=region)
3841
ec2_client = boto3.client("ec2", region_name=region)
@@ -53,11 +56,11 @@ def test_iam_roles(
5356
_wait_build_image_complete(image)
5457

5558

56-
def _build_image(images_factory, instance_profile, lambda_cleanup_role, os, pcluster_config_reader, region):
59+
def _build_image(images_factory, instance_profile, lambda_cleanup_role, os, pcluster_config_reader, region, request):
5760
# Generate image ID
5861
image_id = generate_stack_name("integ-tests-build-image", "")
5962
# Get base AMI
60-
base_ami = retrieve_latest_ami(region, os, ami_type="pcluster", architecture="x86_64")
63+
base_ami = retrieve_latest_ami(region, os, ami_type="pcluster", architecture="x86_64", request=request)
6164
image_config = pcluster_config_reader(
6265
config_file="image.config.yaml",
6366
parent_image=base_ami,

tests/integration-tests/tests/schedulers/conftest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,9 @@ def slurm_dbd(request, database, region, os, vpc_stack_for_database, munge_key):
191191
{
192192
"ParameterKey": "AmiId",
193193
"ParameterValue": (
194-
custom_ami if custom_ami else retrieve_latest_ami(region, os, ami_type="pcluster")
194+
custom_ami
195+
if custom_ami
196+
else retrieve_latest_ami(region, os, ami_type="pcluster", request=request)
195197
),
196198
},
197199
{"ParameterKey": "DBMSClientSG", "ParameterValue": database.cfn_outputs["DatabaseClientSecurityGroup"]},

0 commit comments

Comments
 (0)