diff --git a/src/gardenlinux/github/release_notes/helpers.py b/src/gardenlinux/github/release_notes/helpers.py index 45027e0..0feb0e5 100644 --- a/src/gardenlinux/github/release_notes/helpers.py +++ b/src/gardenlinux/github/release_notes/helpers.py @@ -61,11 +61,9 @@ def download_all_metadata_files(version, commitish, s3_bucket_name): s3_artifacts = S3Artifacts(s3_bucket_name) - commitish_short = commitish[:8] - for flavor in flavors: - cname = CName(flavor[1], flavor[0], "{0}-{1}".format(version, commitish_short)) LOGGER.debug(f"{flavor=} {version=} {commitish=}") + cname = CName(flavor[1], flavor[0], commitish) # Filter by image variants - only download if the flavor matches one of the variants flavor_matches_variant = False for variant_suffix in IMAGE_VARIANTS: @@ -86,8 +84,9 @@ def download_all_metadata_files(version, commitish, s3_bucket_name): continue try: + commit_short = commitish[:8] download_metadata_file( - s3_artifacts, cname.cname, version, commitish_short, local_dest_path + s3_artifacts, cname, version, commit_short, local_dest_path ) except IndexError: LOGGER.warn(f"No artifacts found for flavor {cname.cname}, skipping...") @@ -96,24 +95,23 @@ def download_all_metadata_files(version, commitish, s3_bucket_name): return [str(artifact) for artifact in local_dest_path.iterdir()] -def download_metadata_file( - s3_artifacts, cname, version, commitish_short, artifacts_dir -): +def download_metadata_file(s3_artifacts, cname, version, commit_short, artifacts_dir): """ Download metadata file (s3_metadata.yaml) """ LOGGER.debug( - f"{s3_artifacts=} | {cname=} | {version=} | {commitish_short=} | {artifacts_dir=}" + f"{s3_artifacts=} | {cname.cname=} | {version=} | {cname.commit_id=} | {commit_short=} | {artifacts_dir=}" + ) + maybe_release_objects = s3_artifacts.bucket.objects.filter( + Prefix=f"meta/singles/{cname.cname}-{version}-{commit_short}" ) - release_object = list( - s3_artifacts._bucket.objects.filter( - Prefix=f"meta/singles/{cname}-{version}-{commitish_short}" - ) - )[0] + + release_object = list(maybe_release_objects)[0] LOGGER.debug(f"{release_object.bucket_name=} | {release_object.key=}") s3_artifacts.bucket.download_file( - release_object.key, artifacts_dir.joinpath(f"{cname}.s3_metadata.yaml") + release_object.key, + artifacts_dir.joinpath(f"{cname.cname}.s3_metadata.yaml"), ) diff --git a/tests/github/test_download_metadata_files.py b/tests/github/test_download_metadata_files.py index 25dc273..98cf62b 100644 --- a/tests/github/test_download_metadata_files.py +++ b/tests/github/test_download_metadata_files.py @@ -7,7 +7,6 @@ from ..constants import ( RELEASE_NOTES_S3_ARTIFACTS_DIR, - TEST_GARDENLINUX_COMMIT, TEST_GARDENLINUX_COMMIT_SHORT, TEST_GARDENLINUX_RELEASE, TEST_GARDENLINUX_RELEASE_BUCKET_NAME, @@ -17,20 +16,16 @@ def test_download_metadata_file(downloads_dir, release_s3_bucket): release_s3_bucket.upload_file( RELEASE_NOTES_S3_ARTIFACTS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml", - f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}", + f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT_SHORT}", ) s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) s3_artifacts._bucket = release_s3_bucket - cname = CName( - "test-aws-gardener_prod", - "amd64", - "{0}-{1}".format(TEST_GARDENLINUX_RELEASE, TEST_GARDENLINUX_COMMIT_SHORT), - ) + cname = CName("test-aws-gardener_prod", "amd64", TEST_GARDENLINUX_COMMIT_SHORT) download_metadata_file( s3_artifacts, - cname.cname, + cname, TEST_GARDENLINUX_RELEASE, TEST_GARDENLINUX_COMMIT_SHORT, S3_DOWNLOADS_DIR, @@ -41,18 +36,22 @@ def test_download_metadata_file(downloads_dir, release_s3_bucket): def test_download_metadata_file_no_such_release(downloads_dir, release_s3_bucket): release_s3_bucket.upload_file( RELEASE_NOTES_S3_ARTIFACTS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml", - f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}", + f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT_SHORT}", ) s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) s3_artifacts._bucket = release_s3_bucket release = "0000.0" commit = TEST_GARDENLINUX_COMMIT_SHORT - cname = CName("aws-gardener_prod", "amd64", "{0}-{1}".format(release, commit)) + cname = CName("aws-gardener_prod", "amd64", commit) with pytest.raises(IndexError): download_metadata_file( - s3_artifacts, cname.cname, release, commit, S3_DOWNLOADS_DIR + s3_artifacts, + cname, + release, + TEST_GARDENLINUX_COMMIT_SHORT, + S3_DOWNLOADS_DIR, ) assert not ( S3_DOWNLOADS_DIR / "test-aws-gardener_prod-amd64.s3_metadata.yaml" @@ -62,7 +61,7 @@ def test_download_metadata_file_no_such_release(downloads_dir, release_s3_bucket def test_download_metadata_file_no_such_commit(downloads_dir, release_s3_bucket): release_s3_bucket.upload_file( RELEASE_NOTES_S3_ARTIFACTS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml", - f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}", + f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT_SHORT}", ) s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) @@ -70,11 +69,15 @@ def test_download_metadata_file_no_such_commit(downloads_dir, release_s3_bucket) release = TEST_GARDENLINUX_RELEASE commit = "deadbeef" - cname = CName("test-aws-gardener_prod", "amd64", "{0}-{1}".format(release, commit)) + cname = CName("test-aws-gardener_prod", "amd64", commit) with pytest.raises(IndexError): download_metadata_file( - s3_artifacts, cname.cname, release, commit, S3_DOWNLOADS_DIR + s3_artifacts, + cname, + release, + commit, + S3_DOWNLOADS_DIR, ) assert not ( S3_DOWNLOADS_DIR / "test-aws-gardener_prod-amd64.s3_metadata.yaml" @@ -86,7 +89,7 @@ def test_download_metadata_file_no_such_release_and_commit( ): release_s3_bucket.upload_file( RELEASE_NOTES_S3_ARTIFACTS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml", - f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}", + f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT_SHORT}", ) s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) @@ -94,11 +97,16 @@ def test_download_metadata_file_no_such_release_and_commit( release = "0000.0" commit = "deadbeef" - cname = CName("test-aws-gardener_prod", "amd64", "{0}-{1}".format(release, commit)) + cname = CName("test-aws-gardener_prod", "amd64", commit) + print(f"{cname.cname=}") with pytest.raises(IndexError): download_metadata_file( - s3_artifacts, cname.cname, release, commit, S3_DOWNLOADS_DIR + s3_artifacts, + cname, + release, + TEST_GARDENLINUX_COMMIT_SHORT, + S3_DOWNLOADS_DIR, ) assert not ( S3_DOWNLOADS_DIR / "test-aws-gardener_prod-amd64.s3_metadata.yaml"