Corrects ECRClient.batch_get_image tag handling (#6230)

This commit is contained in:
Zachary Elliott 2023-04-19 12:55:28 -04:00 committed by GitHub
parent f1286506be
commit ff48188362
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 1 deletions

View File

@ -624,7 +624,7 @@ class ECRBackend(BaseBackend):
"imageDigest" in image_id "imageDigest" in image_id
and image.get_image_digest() == image_id["imageDigest"] and image.get_image_digest() == image_id["imageDigest"]
) or ( ) or (
"imageTag" in image_id and image.image_tag == image_id["imageTag"] "imageTag" in image_id and image_id["imageTag"] in image.image_tags
): ):
found = True found = True
response["images"].append(image.response_batch_get_image) response["images"].append(image.response_batch_get_image)

View File

@ -1065,6 +1065,37 @@ def test_batch_get_image_that_doesnt_exist():
response["failures"][0]["imageId"]["imageTag"].should.equal("v5") response["failures"][0]["imageId"]["imageTag"].should.equal("v5")
@mock_ecr
def test_batch_get_image_with_multiple_tags():
client = boto3.client("ecr", region_name="us-east-1")
_ = client.create_repository(repositoryName="test_repository")
manifest = json.dumps(_create_image_manifest())
_ = client.put_image(
repositoryName="test_repository",
imageManifest=manifest,
imageTag="latest",
)
_ = client.put_image(
repositoryName="test_repository",
imageManifest=manifest,
imageTag="v1",
)
latest_response = client.batch_get_image(
repositoryName="test_repository", imageIds=[{"imageTag": "latest"}]
)
v1_response = client.batch_get_image(
repositoryName="test_repository", imageIds=[{"imageTag": "v1"}]
)
latest_response["images"][0]["imageManifest"].should.equal(
v1_response["images"][0]["imageManifest"]
)
@mock_ecr @mock_ecr
def test_batch_delete_image_by_tag(): def test_batch_delete_image_by_tag():
client = boto3.client("ecr", region_name="us-east-1") client = boto3.client("ecr", region_name="us-east-1")