ECR - Persist RegistryID when creating a repository (#4742)

This commit is contained in:
Bert Blommers 2022-01-06 21:05:23 -01:00 committed by GitHub
parent 00b10e33a3
commit 0eb8ec47ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 1 deletions

View File

@ -66,12 +66,13 @@ class Repository(BaseObject, CloudFormationModel):
self,
region_name,
repository_name,
registry_id,
encryption_config,
image_scan_config,
image_tag_mutablility,
):
self.region_name = region_name
self.registry_id = DEFAULT_REGISTRY_ID
self.registry_id = registry_id or DEFAULT_REGISTRY_ID
self.arn = (
f"arn:aws:ecr:{region_name}:{self.registry_id}:repository/{repository_name}"
)
@ -190,6 +191,7 @@ class Repository(BaseObject, CloudFormationModel):
# RepositoryName is optional in CloudFormation, thus create a random
# name if necessary
repository_name=resource_name,
registry_id=None,
encryption_config=encryption_config,
image_scan_config=image_scan_config,
image_tag_mutablility=image_tag_mutablility,
@ -406,6 +408,7 @@ class ECRBackend(BaseBackend):
def create_repository(
self,
repository_name,
registry_id,
encryption_config,
image_scan_config,
image_tag_mutablility,
@ -417,6 +420,7 @@ class ECRBackend(BaseBackend):
repository = Repository(
region_name=self.region_name,
repository_name=repository_name,
registry_id=registry_id,
encryption_config=encryption_config,
image_scan_config=image_scan_config,
image_tag_mutablility=image_tag_mutablility,

View File

@ -24,6 +24,7 @@ class ECRResponse(BaseResponse):
def create_repository(self):
repository_name = self._get_param("repositoryName")
registry_id = self._get_param("registryId")
encryption_config = self._get_param("encryptionConfiguration")
image_scan_config = self._get_param("imageScanningConfiguration")
image_tag_mutablility = self._get_param("imageTagMutability")
@ -31,6 +32,7 @@ class ECRResponse(BaseResponse):
repository = self.ecr_backend.create_repository(
repository_name=repository_name,
registry_id=registry_id,
encryption_config=encryption_config,
image_scan_config=image_scan_config,
image_tag_mutablility=image_tag_mutablility,

View File

@ -116,6 +116,37 @@ def test_create_repository_with_non_default_config():
)
@mock_ecr
def test_create_repository_in_different_account():
# given
client = boto3.client("ecr", region_name="us-east-1")
repo_name = "test-repo"
# when passing in a custom registry ID
response = client.create_repository(
registryId="222222222222", repositoryName=repo_name
)
# then we should persist this ID
repo = response["repository"]
repo.should.have.key("registryId").equals("222222222222")
repo.should.have.key("repositoryArn").equals(
"arn:aws:ecr:us-east-1:222222222222:repository/test-repo"
)
# then this repo should be returned with the correct ID
repo = client.describe_repositories()["repositories"][0]
repo.should.have.key("registryId").equals("222222222222")
# then we can search for repos with this ID
response = client.describe_repositories(registryId="222222222222")
response.should.have.key("repositories").length_of(1)
# then this repo is not found when searching for a different ID
response = client.describe_repositories(registryId=ACCOUNT_ID)
response.should.have.key("repositories").length_of(0)
@mock_ecr
def test_create_repository_with_aws_managed_kms():
# given